带头结点的单链表冒泡排序
来源:互联网 发布:spss软件应用 编辑:程序博客网 时间:2024/05/17 01:05
本代码描述了带头结点的单链表的冒泡排序,通过指针的移动来完成,其原理跟一维数组的冒泡排序一致,主要就是第一次排序将最大的数落到链表的最后一个,第二次将次大的数落在倒数第二个位置。复杂度O(n^2)。具体过程代码中已有解释。第一次写写博客,如有错误,望大家不吝赐教!
#include <iostream>using namespace std;//链表中结点的结构体:由value值和一个结构体指针构成struct LinkNode{ int value; struct LinkNode *link;};//插入链表节点LinkNode * InputList(LinkNode *head){ head = new LinkNode;//本例为带头结点的链表 head->link = NULL; int size; cout<<"请输入链表结点个数"<<endl; cin>>size; cout<<"请输入各个结点的值"<<endl; for(int i=0;i<size;i++) { LinkNode * NewNode = new LinkNode; cin>>NewNode->value; NewNode->link = head->link; head->link = NewNode; } return head;}//输出链表void OutputList(LinkNode * head){ LinkNode * pass = head; while(pass->link) { cout<<pass->link->value<<" "; pass = pass->link; } cout<<endl;}LinkNode * ListSort(LinkNode *head){ LinkNode * p, *q, *tail, *h; //tail指针的作用是每次冒泡排序后指向最后一个数(找出的最大值)的前一个数,效果是下一次的冒泡排序次数减少一次,提高了代码效率 tail = NULL; h = head; while(h->link!=tail) { p = head; q = p->link; while(q->link!=tail) { if(p->link->value > q->link->value) { p->link = q->link; q->link = q->link->link; p->link->link = q; p = p->link; } else { p = p->link; q = q->link; } } tail = q;//前移一位 } return head;}int main(){ LinkNode *head = NULL;//head指针是把各个函数链接起来的桥梁 head = InputList(head);//插入链表节点 cout<<"排序前:"<<endl; OutputList(head);//输出排序前各节点的值 head = ListSort(head);//排序 cout<<"排序后:"<<endl; OutputList(head);//输出排序后各节点的值 //释放内存 while(head) { LinkNode *del = head; head = head->link; delete del; } return 0;}
1 0
- 带头结点的单链表冒泡排序
- 带头结点的单链表
- 带头结点的单链表
- 带头结点的单链表
- 带头结点的单链表( 冒泡排序 一次遍历求中间结点的值) 链表 就地反转 倒数第k个结点
- 单链表插入排序(带头结点与不带头结点)
- 经典算法学习——单链表(不带头结点)实现冒泡排序
- 经典算法学习——单链表实现冒泡排序(带头结点)
- 带头结点与不带头结点的单链表-LinkList
- 单链表的实现(带头结点)
- 单链表的实现(带头结点)
- 单链表的创建--带头结点
- 带头结点的单链表实现
- 不带头结点的单链表
- 不带头结点的单链表
- 带头结点单链表的建立
- 带头结点的循环单链表
- 带头结点的单链表总结
- 线程池原理及创建(C++实现)
- Android产品研发(六)-->Apk混淆
- WebStorm2016破解方法
- IpAndQq(使用map和set)
- NFS服务配置
- 带头结点的单链表冒泡排序
- 初创公司大数据平台的选型和进化心得
- 个人笔记系统可以使用了-可以粘图片-比wiki好用
- 为什么XML需要序列化和反序列化
- HDU-2001
- uibarbuttonitem颜色
- git 托管pods
- 3.11 程序改错(二分查找)
- ThinkPHP 中使用 base64_encode 编码后带左斜杠”/“的安全编码方案