数据结构 求链表的长度以及用冒泡排序的算法对链表中的值进行排序
来源:互联网 发布:路由器绑定mac 编辑:程序博客网 时间:2024/06/10 23:22
在创建好一个链表后,并且对链表中结点中数据域赋予值后,可以对各节点中的数据域的值进行排序,并且可以求出链表的长度
如何求出一个链表的长度:
在前面的博客中讲到对链表的遍历输出,其实链表的长度的求法和链表的遍历很相似,首先判断第一个结点是否为空,
如果第一个结点为空,直接返回,说明此链表为空,长度为0。如果第一个结点不为空,将长度加一,再进行指向第二个结点,
判断第二个结点是否为空,如果为空,返回当前长度。如果不为空,长度加一,并指向下一个结点。以此类推,直到判断出结点为空,返回长度。
#include <stdio.h> #include <malloc.h> #include <time.h> typedef struct list { int vaule; //数据域 struct list *PNext; //指针域 }TNODE, *TPNODE; TPNODE Creat_list(); void Trave_list(TPNODE _PHead); int GetListLen(TPNODE _PHead);int SortList(TPNODE _pHead, int _iLen);int main() { int iRet = 0; TPNODE PHead; srand((int)time(NULL)); PHead = Creat_list(); //创建链表 Trave_list(PHead); //遍历链表,输出链表中的数值 iRet = GetListLen(PHead); //获取链表长度 printf("This Len of List is %d\n", iRet); SortList(PHead, iRet); //对链表进行排序 Trave_list(PHead); //遍历链表,输出链表中的数值 return 0; } //创建链表 TPNODE Creat_list() { int i = 0; int len = 0; int iVaule = 0; TPNODE pHead; pHead = (TPNODE)malloc(sizeof(TNODE)); //创建一个头结点 if(NULL == pHead) //创建失败 { printf("create list fail\n"); } TPNODE PTail = pHead; pHead->PNext = NULL; printf("please input len of list\n"); scanf("%d", &len); //输入想要的个数 for(i = 0; i < len; i++) { iVaule = rand()%100+1; TPNODE pNew = (TPNODE)malloc(sizeof(TNODE)); //分配内存 pNew->vaule = iVaule; //将数据域赋予数据 PTail->PNext = pNew; pNew->PNext = NULL; PTail = pNew; } return pHead; } //链表输出 void Trave_list(TPNODE _PHead) { int i = 0; TPNODE P = _PHead->PNext; while(NULL != P) { i = 1; printf("%d ", P->vaule); P = P->PNext; } if(1 == i) { printf("\n"); }} //获取链表的长度int GetListLen(TPNODE _PHead){ int i = 1; TPNODE P = _PHead->PNext; while(NULL != P) { P = P->PNext; i++; } return i -1;}//对链表的数据进行排序int SortList(TPNODE _pHead, int _iLen){ int i = 0; int j = 0; int iTemp = 0; TPNODE p, q; for(i = 0, p = _pHead->PNext; i < _iLen -1; i++, p= p->PNext) { for(j = 0, q = _pHead->PNext; j < _iLen - i - 1; j++, q= q->PNext) { if(q->vaule > q->PNext->vaule) { iTemp = q->vaule; q->vaule = q->PNext->vaule; q->PNext->vaule = iTemp; } } }}
此程序 的运行步骤1, 首先创建一个链表,用户需要输入待创建链表的长度,然后产生随机数对每一个数据域赋值。
2, 对链表中每个数据域进行输出
3, 求出链表的长度
4,通过第三步中求出链表中的长度,进而对链表中的数据进行排序
5, 对排序后的结果进行输出
创建链表与遍历链表:http://blog.csdn.net/z_dream_st/article/details/77142223
数据结构 冒泡排序详解:http://blog.csdn.net/z_dream_st/article/details/77539917
阅读全文
0 0
- 数据结构 求链表的长度以及用冒泡排序的算法对链表中的值进行排序
- 用冒泡排序的算法对输入的字符串进行排序
- 自我对冒泡排序以及对快速排序的理解
- (C# 版描述)冒泡排序算法以及排序时间的测试 ---数据结构
- 我---对‘数据结构’中‘排序’的理解 ---------1:冒泡排序
- 冒泡排序算法----对一个数组进行冒泡排序
- 利用随机类生成数组,并用冒泡排序以及选择排序对不同数组的元素进行从小到大的排序
- 可对多种类型进行排序的冒泡排序
- 【数据结构与算法】【排序】冒泡排序的代码实现
- 数据结构和算法的学习-排序-冒泡排序
- 数据结构与算法 -- 普通链表的插入、冒泡排序、选择排序、计数排序(c++实现)
- 排序算法之冒泡排序的思想以及Java实现
- C++中用冒泡排序算法对一个数组中的元素进行排序
- 数据结构-冒泡排序算法
- 数据结构-冒泡排序算法
- 使用冒泡排序算法对数组元素进行排序
- 用Python编写数据结构的冒泡排序
- 我的js:冒泡排序算法选择排序算法以及快速排序算法。
- 【PAT】【Advanced Level】1076. Forwards on Weibo (30)
- (CodeForces
- 阿里云CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)
- C语言学习笔记——关于 .obj 文件的理解
- 年中总结--一切才只是刚刚开始
- 数据结构 求链表的长度以及用冒泡排序的算法对链表中的值进行排序
- Mac输入框消失解决
- 创建购物车实体类,模拟购物车功能
- Linux基础操作整理
- 30、进程的基础理论,并发
- 记一次移动端CSS引发的小Bug
- web安全之文件上传漏洞攻击与防范方法
- Toast重复显示工具类
- python 自动发qq邮件