C语言链表排序_C语言版数据结构链表

C语言链表排序_C语言版数据结构链表以上搬运至郝斌老师数据结构中的视频知识,然后依样画葫芦去写的;当然指针知识和链表的基础知识要先懂:首先先创建链表,如下:typedef struct node{intdata;//创建数据域structnode*pNext;//创建指针域}NODE,*PNODE;//相当于structnode,struct*nodePNODE

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

//以上搬运至郝斌老师数据结构中的视频知识,然后依样画葫芦去写的;

//当然指针知识和链表的基础知识要先懂:

//首先先创建链表,如下:

#include <stdio.h>

#include <malloc.h>

#include <stdlib.h>

typedef  struct  node

{


int data;
//创建数据域


struct node * pNext;
//创建指针域

}NODE, *PNODE;
//相当于struct node,struct *node

PNODE  create_list()
//创建的新链表

{


int i;


int val;


int len;


PNODE pHead = (PNODE)malloc(sizeof(NODE));
//这个要加头文件malloc.h,应该都懂


if(NULL == pHead)


{


printf(“头结点分配失败!退出程序\n”);


exit(-1);
//需要加头文件stdlib.h


}


PNODE pTail  =  pHead;
//创建尾节点作为首节点,这个的作用在于后面将新创建的节点覆盖于尾节点,使其连接成为一个链表


pTail->pNext = NULL;



printf(“请您输入你要创建的节点个数:len = “);


scanf(“%d”, &len);


for(i=0; i<len; ++i)


{


PNODE pNew = (PNODE)malloc(sizeof(NODE));


if(NULL == pNew)


{


printf(“新结点分配失败!退出程序!”);


exit(-1);


}


printf(“请您输入要输入第%d的节点的值:”, i+1);


scanf(“%d”, &val);


pNew->data = val;


pTail->pNext = pNew;
//使尾节点(最开始是头结点)指向新创建新节点


pNew->pNext = NULL;
//使新节点的指针域为空,成为尾节点


pTail = pNew;
//使新节点再次成为尾节点,和首次的步骤一样


}


return pHead;

}

//其次,对链表的遍历是必须的;

void traverse_list(PNODE pHead)

{


PNODE p = pHead->pNext;
//指向首节点,而非头结点


while(p != NULL)


{


printf(“%d\t”, p->data);
//相当于数组中的p++


p = p->pNext;


}

}

//这里需要对链表的长度进行统计,才能对冒泡排序进行运算:

//因此依据上面:

int length_count(PNODE pHead)

{


int count=0;


PNODE p = pHead->pNext;


while(NULL != p)


{


p = p->pNext;


count++;


}


return count;

}

//最后开始着手写链表的排序,采用的是冒泡排序:

void sort_list(PNODE pHead)

{


int i, j, t;


PNODE p, q;


int len;


len = length_count(pHead);


for(i=0, p=pHead->pNext; i<len-1; ++i, p = p->pNext)
//p = pHead->pNext;相当于数组中p = 0, p = p->pNex相当于p++


{


for(j=0, q=pHead->pNext; j<len-1-i; ++j,q=q->pNext)
//其实以上都是泛型类比所得的


{


if(q->data > q->pNext->data)


{


t = q->pNext->data;


q->pNext->data = q->data;


q->data = t;


}


}


}

}

int main(void)

{


PNODE pHead=NULL;
//创建头结点,并且让它为空


pHead = create_list();



sort_list(pHead);


traverse_list(pHead);


return 0;

}

/*

程序运行结果:

请您输入你要创建的节点个数:len = 5

请您输入要输入第1的节点的值:12

请您输入要输入第2的节点的值:34

请您输入要输入第3的节点的值:26

请您输入要输入第4的节点的值:44

请您输入要输入第5的节点的值:0

0       12      26      34      44      请按任意键继续. . .

*/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183775.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Windows server WSUS补丁服务器搭建

    写在前面关于微软Windows操作系统补丁更新,针对于客户生产环境补丁更新,为了安全起见不得不建议搭建相应的补丁服务器,利用自动或者手动更新指定服务器的最新补丁。借用闲暇时间做相应的总结,方便后期工作中参考。搭建条件首先安装相应的.NET环境,IIS环境, 存放补丁包,需要充裕的磁盘空间。搭建过程首先下载Wsus3.0的安装文件,这里给出简体中文版的下载地址,…

    2022年4月1日
    56
  • WAP网页设计入门 [转]「建议收藏」

    WAP网页设计入门 [转]「建议收藏」WAP网页设计入门[转]手机专用网页(WML篇)1.基本规则2.基本格式和文件头3.显示文本4.显示图片5.锚和任务6.显示表单7.事件8.CGI编程   这里介绍WAP协议标准组织所制定的标记语言WML,由于和以前介绍的HDML在手机浏览器专用网页的特征上基本一致,所以概念部分就略去了,直接讲述语言。1。基本规则  * WML使用XML文档字符集…

    2025年7月28日
    4
  • Python读取文件时出现UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position xx: 解决方案[通俗易懂]

    Python读取文件时出现UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position xx: 解决方案[通俗易懂]Python在读取文件时withopen(‘article.txt’)asf:#打开新的文本text_new=f.read()#读取文本数据出现错误:UnicodeDecodeError:’gbk’codeccan’tdecodebyte0x80inposition145:illegalmultibytesequence此…

    2022年9月13日
    2
  • visifire  柱状图控件

    visifire  柱状图控件最近使用到一个柱状图控件visifire用起来还是比较高级的不过会有水印商业用途需要购买正版效果还是很好的还有动画效果能够识别最大高度创建之前需要引用http://note.youdao.com/noteshare?id=4a8d01bd0bfef2cdc86c5752aad3156…

    2022年7月21日
    14
  • mysql语句和sql语句的区别_mongodb和mysql的区别

    mysql语句和sql语句的区别_mongodb和mysql的区别MySQL和SQL之间的区别有哪些?很多PHP的初学者,对MySQL,MyAdmin和SQL有什么区别并不是很清楚?下面php中文网就带领大家来学习一下MySQL和SQL之间的区别。【推荐阅读:MySQL什么意思】一:什么是SQLSQL是一种数据库语言,可以定义和操作数据库。SQL由ISO(国际标准化组织)标准化,和其他数据库中几乎是相同的方式运行,SQL大致分为三种语言。它在控制和操作数据库时使…

    2022年9月28日
    2
  • Mysql数据库课程设计

    Mysql数据库课程设计Hello小伙伴们,大家好,我是楠橘星!!今天给大家分享一下使用javafx编写的前端的Mysql数据库课程设计题库与试卷生成系统!废话不多说了,直接上截图,希望对大家有所帮助!(建议拿来参考不建议直接CV哦!)1.系统需求分析1-1、功能分析通过深入细致的调查,多方面搜集资料,以及实地考察等方法,经过总结研究,总结出了试卷生成系统的的基本的业务功能,详细如下:学生信息维护:主要完成学生的学号、班级、考试信息等操作。教师信息维护:主要是教师信息的添加、修改和删除等操作。题库信息维护

    2022年5月19日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号