数据结构——5 单链表排序
来源:互联网 发布:极点五笔 linux 编辑:程序博客网 时间:2024/06/11 01:52
单链表——排序
单链表排序:基于冒泡法,每个节点不动,只动结点里面的x
#include<iostream>using namespace std;struct node //node结构体,里面有一个node指针,用来指向下一个node对象{int x;node *next; //指向什么类型的对象,就用什么类型的指针};node* create(int n) //创建链表,参数n表示结点的个数,返回类型是结点指针node*{node *head=new node; //建立头结点node *p=head; //创建用于往后指的node指针for(int i=0;i<n;i++){node *temp=new node; //new一个node指针temp->x=rand()%100;p->next=temp; //将p的next指向创建的temp,把新节点连接到链表后面p=temp; //将p指向新结点temp,即p移动到下一个节点}p->next=NULL; //创建完成后,p->next指向NULLreturn head;}void display(node *head) //输出链表{ node *p;p=head->next; //p重新指向头结点后的那个结点,即for循环创建的第一个结点if(p==NULL)cout<<"NULL List";while(p!=NULL) //输出{cout<<p->x<<" ";p=p->next;}cout<<endl;}/*排序的思想是:冒泡法排序,比较两个结点结构体中的x值,然后指交换x,两个结点的指针不动所以排序后输出链表,只要给链表的头结点就行思想很重要,刚开始,想交换两个结点,好难!!!*/void sort(node *head){node *p,*s; //定义node指针变量int temp; //用于交换两个结点中x的临时变量p=head->next; //从第一个结点开始比较while(p){s=p; while(s) //注意:这里用s,不用s->next,不然最后一个结点比较不了{if(s->x < p->x) //交换两节点的x值{temp=s->x;s->x=p->x;p->x=temp;}s=s->next; //用于内循环的下一次比较}p=p->next; //用于外循环的下一次比较}}int main(){node *list; list=create(16); //建立链表display(list); //输出显示建立的链表sort(list); display(list); //输出排序后的链表return 0;}
0 0
- 数据结构——5 单链表排序
- 【数据结构】单链表—冒泡排序
- 数据结构——排序
- 数据结构——排序
- 《数据结构》——排序
- 数据结构——排序
- 数据结构—排序算法
- 数据结构—希尔排序
- 数据结构—排序总结
- 数据结构 — 归并排序
- 数据结构 — 堆排序
- 数据结构—排序
- 数据结构—排序I
- 数据结构—排序II
- 数据结构—排序III
- 数据结构—排序IV
- 数据结构 — 排序算法
- 数据结构 — 插入排序
- 笔试选择题
- Linux统计某文件夹下文件、文件夹的个数
- 数据存储plist文件中找不对对应的键值对
- iOS App上架(Member Center中)的一些知识及原理和iOS App上架流程
- 静态成员函数访问非静态成员
- 数据结构——5 单链表排序
- 2016年度年中总结
- 8、协议
- java中List集合
- 谈谈Processing 3D世界 六 (续)
- 来赚app是真的吗,大家一起来赚吧,来赚官方下载最新最全使用教程
- C++单例模式的六种实现
- openlayer实现图层控件功能
- 控制台动态插入代码