单链表排序(冒泡排序法)
2016-05-22 19:18
295 查看
思想很简单,不再赘述,实现见代码:
#include <iostream> typedef struct node { int data; struct node *next; } NODE; NODE *create_end(int arr[], int len) { NODE *head = (NODE *)malloc(sizeof(NODE *)); head->next = NULL; NODE *end = head; for (int i = 0; i < len; i++) { NODE *p = (NODE *)malloc(sizeof(NODE *)); // 也可用 new NODE(); p->data = arr[i]; end->next = p; end = p; } end->next = NULL; return head; } // 此方法适用于不带头节点的单链表的打印,对于带头节点的单链表要稍作处理。 void print(NODE *head) { if (head == NULL) return; while (head != NULL) { printf("%d\n",head->data); head = head->next; } } // 单链表排序(采用-冒泡排序法)(适用于-不带头节点的单链表) // 对于带头节点的单链表来说,在传参时,要稍作调整。 void sortList(NODE *head) { NODE *p = head; NODE *q = head; int temp; for (; p->next; p = p->next) { // 确定比较次数 for (q = head; q->next; q = q->next) { if (q->data > q->next->data) { temp = q->data; q->data = q->next->data; q->next->data = temp; } } } } int main(int argc, const char * argv[]) { int arr[] = {6,2,5,4,3,7,1}; int len = sizeof(arr)/sizeof(int); NODE *head = create_end(arr, len); // 因为创建的链表是带头节点的,所以此处打印要稍作处理; NODE *first = head->next; print(first); printf("----------------------\n"); NODE *first_2 = head->next; sortList(first_2); print(head->next); return 0; }
相关文章推荐
- EXPORT_SYMBOL
- ArcGIS Engine开发中利用GP工具时常出现的错误
- JSP9大内置对象及方法
- Android开发之Fragment的生命周期
- mysql基本操作
- spring整合技术之---利用JDBC访问数据库
- 运算符重载加法(双目)
- Nginx日志分割脚本
- Ruby中的变量定义
- NetBeans8.1开发Spring MVC的基础代码
- poj 3070 Fibonacci(矩阵加速DP)
- Leetcode--Flatten Binary Tree to Linked List
- shader内置函数
- 学习进度条
- JavaScript 基础(七) 箭头函数 generator Date JSON
- 2016百度之星总结帖
- 安卓屏幕最大化
- 安卓屏幕最大化
- SSD中没有efi分区的解决办法即固态硬盘不能设置uefi引导的解决办法
- 【Python】使用cmd模块构造一个带有后台线程的交互命令行界面