15.给链表中的数据排序
2015-06-23 19:51
267 查看
给定程序中,函数fun的功能是将带头节点的单向链表节点数据中的数据从小到大排序,即若原链表节点数据从头至尾的数据为:10、4、8、6,排序后链表节点数据从头至尾的数据为:2,、4、6、8、10.
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #define N 6 typedef struct node { int data; struct node *next; }NODE; void fun(NODE *h) { NODE *p, *q; int t; p = h->next; while (p) { q = p->next; while (q) { if (p->data > q->data) { t = p->data; p->data = q->data; q->data = t; } q = q->next; } p = p->next; } } NODE *creatlist(int a[]) { NODE *h, *p, *q; int i; h = (NODE *)malloc(sizeof(NODE)); h->next = NULL; p = NULL; for (i = 0;i < N;i++) { q = (NODE*)malloc(sizeof(NODE)); q->data = a[i]; q->next = NULL; if (h->next == NULL) h->next = p = q; else { p->next = q; p = q; } } return h; } void outlist(NODE *h) { NODE *p; p = h->next; if (p == NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p = p->next; } while (p != NULL); printf("->End\n"); } } int main() { NODE *head; int a = { 0,10,2,4,8,6 }; head = creatlist(a); printf("\nThe original list:\n"); outlist(head); fun(head); printf("\nThe list after sorting:\n"); outlist(head); getchar(); return 0; }
相关文章推荐
- maven之非继承引用dependency-‘ import scope ’
- python之花瓣美女下载
- 最大流和最小割:Edmonds_Karp算法
- 约瑟夫环的C语言和86/88汇编非递归算法
- python之花瓣美女下载
- OpenStack实践之旅
- scala之尾递归实际用处1
- webStorm的注册码
- android:android Intent and IntentFilter
- Popular Deep Learning Tools – a review
- 几个面试经典算法题Java解答
- android仿最新版本微信相册--附源码
- C++内存管理
- 理解linux文件系统VFS
- tomcat环境配置
- PHP学习笔记(一):开发微信平台
- chm手册显示已取消到该网页的导航
- hbase命令
- win8.1如何删除打开这台电脑最上面的几个文件夹
- MySQL查询时区分大小写的方法