链表的排序
2012-07-31 21:01
169 查看
struct node heada, headb;
link t, u, x, a = &heada, b;
//a标示链表的首节点,是一个哑节点,item为空
for(i = 0; t = a; i < N ; i++){
//为后面一个节点分配空间
t->next = malloc(sizeof *t);
//t移动,并指向最后一个节点
t = t->next;
//有效节点的后面一个节点设置为空
t->next = NULL;
//随机生成1000之内的整数
t->item = rand()%1000;
}
//排序
b = &headb; b->next = NULL;
for(t = a->next; t !=NULL; t = u){
//每迭代一次,t指向下一个节点
u = t->next;
//遍历链表b,将其中的值与t->item比较
for(x = b; x->next != NULL; x = x->next)
//如果x的值比较大,则终止遍历,进行插入
if(x->next->item > t->item) break;
//元素的插入
t->next = x->next;
x->next = t;
}
link t, u, x, a = &heada, b;
//a标示链表的首节点,是一个哑节点,item为空
for(i = 0; t = a; i < N ; i++){
//为后面一个节点分配空间
t->next = malloc(sizeof *t);
//t移动,并指向最后一个节点
t = t->next;
//有效节点的后面一个节点设置为空
t->next = NULL;
//随机生成1000之内的整数
t->item = rand()%1000;
}
//排序
b = &headb; b->next = NULL;
for(t = a->next; t !=NULL; t = u){
//每迭代一次,t指向下一个节点
u = t->next;
//遍历链表b,将其中的值与t->item比较
for(x = b; x->next != NULL; x = x->next)
//如果x的值比较大,则终止遍历,进行插入
if(x->next->item > t->item) break;
//元素的插入
t->next = x->next;
x->next = t;
}
相关文章推荐
- Leetcode Reorder List 链表重排序
- 面试题17. 合并两个排序的链表
- 链表:检测是否有环,是否相交,删除节点,插入节点,打印节点,建立节点,节点排序,节点逆序,
- 单链表排序
- [C++]Remove Duplicates from Sorted List 从已排序的链表中移除重复元素
- [LeetCode] Remove Duplicates from Sorted List 删除排序链表中的重复元素
- 【C语言】合并,排序两个链表
- 网状高效排序双向链表
- 链表插入排序
- 单链表的折半查找,冒泡排序,选择排序
- Java链表的排序
- 微软100题(1) 二元查找树转变成排序的双向链表
- 合并两个排序的链表
- [Leetcode] Merge two sorted lists 合并两已排序的链表
- [Leetcode] Remove duplicate from sorted list ii 从已排序的链表中删除重复结点
- 剑指offer_16_合并两个排序的链表
- 面试题 17:合并两个排序的链表
- Leet Code 143:Reorder List 对一个链表重新排序
- c语言:链表排序, 链表反转
- [Leetcode] Merge k sorted lists 合并k个已排序的链表