冒泡排序的链表实现
来源:互联网 发布:剑罗数据 编辑:程序博客网 时间:2024/06/09 23:38
冒泡排序大家应该都很熟悉,不过平常都是用数组实现的,前几天参加了深信服的笔试,其中编程题第一个就是用链表实现冒泡排序,当时有点懵逼,所以我也不知道自己写的对不对,所以笔试后就认真看了一下这个。
用链表实现冒泡排序有两种方法:一种是交换节点,另一种就是只交换节点的值。
代码如下(交换节点):
Code:
#include <stdio.h>#include <stdlib.h>typedef struct tagNode{ int value; struct tagNode *next;}Node, *pNode;void BubbleSort(pNode head){ pNode tail = NULL; while(head->next != tail) { pNode pre = head; pNode cur = pre->next; while(pre->next != tail && cur->next != tail) { if(pre->next->value > cur->next->value) { pre->next = cur->next; cur->next = cur->next->next; pre->next->next = cur; } pre = pre->next; cur = pre->next; } tail = cur; }}void Print(pNode head){ while(head->next != NULL) { printf("%d ",head->next->value); head=head->next; } puts("");}int main(){ int n; pNode list = malloc(sizeof(Node)); list->next = NULL; scanf("%d",&n); for (int i = 0; i < n; i++) { pNode node = malloc(sizeof(Node)); scanf("%d",&node->value); node->next = list->next; list->next = node; } BubbleSort(list); Print(list); return 0;}
交换值的话其实和这个基本一样,只要把循环里的交换节点的内容改成交换值就好了。 int temp=pre->next->value;
pre->next->value=cur->next->value;
cur->next->value=temp;
1 0
- 递归实现链表的冒泡排序。
- 冒泡排序的链表实现
- 冒泡排序的链表实现
- 链表实现冒泡排序
- 链表实现冒泡排序
- 链表实现冒泡排序
- 冒泡升序排序的数组实现和链表实现
- 冒泡排序的实现
- 冒泡排序的实现
- 冒泡排序的实现
- 冒泡排序的实现
- 冒泡排序的实现
- 冒泡排序的实现
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 剑指offer-面试题31 求连续子数组的最大和
- 计数排序-《算法导论》学习笔记八
- 1393: [Ceoi2008]knights
- [Ubuntu]常见问题手册
- 2.0第二章寄存器
- 冒泡排序的链表实现
- 剑指offer-面试题37 两个链表的第一个公共节点
- Myeclipse中Package的错误
- 剑指offer-面试题38 : 数字在排序数组中出现的次数
- NYOJ 711 最舒适的路线
- Android:启动模式与任务栈,进程的关系
- 【day-6】全排列-不重复
- 【作业4】基本查询语句
- js 判断一个值是否为数字