C中链表的几种算法实现(持续中……)
2013-04-22 21:05
155 查看
对于链表大家应该都是很熟悉了,不过这种熟悉只是属于理论上,知道它怎么一回事,知道它的插入、删除等等,这里不过是只是给出它的实现。
当然也会涉及到一些简单算法的实现。
比如冒泡算法是最简单的,一般的做法就是一轮一轮的从A端把“每轮中的最小值”移向B端中,这样循环下来就形成了有序排列。当然我们也可以把“最小值”改变下,变成“最大值”,而它移动的方向当然也是可以变化的,这个是很灵活的。现在就拿冒泡算法入手,简单的实现下:
节点的构造如下
它的实现就是每轮将最大值移向最后一个结点的方向,即假如有5个节点,第一次将最大值移到最后一个节点,而第二次就将最大值移到倒数第二个节点,以此类推。
当然也会涉及到一些简单算法的实现。
比如冒泡算法是最简单的,一般的做法就是一轮一轮的从A端把“每轮中的最小值”移向B端中,这样循环下来就形成了有序排列。当然我们也可以把“最小值”改变下,变成“最大值”,而它移动的方向当然也是可以变化的,这个是很灵活的。现在就拿冒泡算法入手,简单的实现下:
节点的构造如下
typedef struct node{ int num; struct node *next; }node;
它的实现就是每轮将最大值移向最后一个结点的方向,即假如有5个节点,第一次将最大值移到最后一个节点,而第二次就将最大值移到倒数第二个节点,以此类推。
void sort(node *head) { int temp = 0; node *end = NULL; node *p1=NULL, *p2=NULL; p1 = head; while(p1->next != end) { p2 = p1; for(; p2->next != end; p2=p2->next) { if(p2->num > p2->next->num) { temp = p2->next->num; p2->next->num = p2->num; p2->num = temp; } } end = p2; } }
相关文章推荐
- 用链表实现“啦啦啦”等算法或数据结构(持续更新)
- C语言几种简单的算法实现
- 9.2链表(六)——给定一个有环链表,实现一个算法返回环路的开头结点
- 单链表和双链表 算法与实现
- 几种线程池的实现算法分析
- 【老鸟学算法】二元查找树转变成排序的双向链表——算法思想及java实现
- 【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】
- 几种文本相似度算法的C++实现
- 单链表实现线性表的基本算法(一)
- 双向循环链表删除算法的C++程序实现
- 人见人爱A-B(链表的算法实现)
- 用单链表结构实现算法2.2的程序
- (链表实现)写出两个一元多项式相加的算法
- GC是什么?有几种算法实现?
- [c++]链表实现--持续更。
- 基本算法实现小结(一)—— 单链表
- 【数据结构与算法】链表1:单向链表(Java实现)
- 【LeetCode-面试算法经典-Java实现】【025-Reverse Nodes in k-Group(单链表中k个结点一组进行反转)】
- 双向循环链表插入算法的C++程序实现