链表排序
来源:互联网 发布:阳光一百置业 知乎 编辑:程序博客网 时间:2024/05/20 06:51
常用链表有两种,单链表和双向链表。
单链表:在链表基础的结构体中有一个指针,指向下一个或者上一个。
双链表:跟单链表差不多,不过有两个指针,分别指向前和后。
最近在学习链表的排序,下面使用单链表配合冒泡法完成排序。
(使用的双链表,但仅用单链表的功能)
链表基础结构体
typedef struct data{ int a; struct data *next; struct data *last;}Data;
链表的创建
Data * creat(int n){ Data *head,*p1,*p2; head = p1 = p2 = (Data *)malloc(sizeof(Data)); if(head == NULL) return NULL; scanf("%d",&head -> a); n--; while(n--) { p1 = (Data *)malloc(sizeof(Data)); scanf("%d",&p1 -> a); p1 -> last = p2; p2 -> next = p1; p2 = p1; } p2 -> next = NULL; head -> last = NULL; return head;} //容错处理欠佳
冒泡排序
void bubble_sort(Data *head){ Data *p = head,*q = head; while(q -> next) { p = head; //每次排序后需要再次初始至head while(p -> next) { if(p -> a < p -> next -> a) { int tmp; tmp = p -> a; p -> a = p -> next -> a; p -> next -> a = tmp; } p = p -> next; } q = q -> next; }}
冒泡排序的时间复杂度太大,在日常使用中一般也不会用,谨以此代码做思路。改天贴出快速排序下的链表排序。
0 0
- 链表排序 归并排序
- 链表排序--选择排序
- 链表排序--快速排序
- 链表排序--归并排序
- 排序3:插入排序(普通插入排序 + 折半插入排序 + 链表插入排序 + 希尔排序)
- LIST排序, Struct排序, qsort排序, STL::LIST sort排序, 链表排序
- 单向链表排序:快速排序和归并排序
- 单向链表排序-归并排序
- 链表排序,使用插入排序,
- 链表排序-直接插入排序
- 链表的一种排序---冒泡排序
- c 链表排序 - 选择排序
- 链表排序之插入排序
- 插入排序进行链表排序
- 优化冒泡排序 & 链表选择排序
- 链表排序之选择排序
- 链表排序之冒泡排序
- 链表排序(归并排序)
- 从window中的eclipse中提交jar包到yarn框架运行,出现Exception from container-launch: org.apache.hadoop.util.Shell$
- Java设计模式--------中介者模式
- 1023
- 怎样申请微信公众平台接口测试帐号
- Linux 网卡流量工具详细介绍【转】
- 链表排序
- 数组最大子序列的和
- 中文分词、支持向量机代码实现
- MySql-使用事件调度器(event_scheduler)
- Android 高亮 TextView
- FFmpeg深入分析之零-基础
- Android绘图机制与处理技巧
- Spark 基础拾遗
- hdu-1890 Robotic Sort