链表排序
2016-01-22 13:43
183 查看
将一个链表中的元素按照从小到大的顺序进行排序
输出结果显示:
#include <stdio.h> #include <iostream> using namespace std; //定义结构体类型P typedef struct point { int data; struct point *next;//指向结构体的指针 }P; //创建链表(指定长度,存在结构体数组中),返回头指针 P *createlink(P a[],int n) { P *head=&a[0]; for(int i=0;i<n-1;i++) { a[i].next=&a[i+1]; } a[n-1].next=NULL; return head; } //链表输出 void output(P *head) { P *ph=head; while(ph!=NULL) { cout<<ph->data<<'\t'; ph=ph->next; } } //链表排序 void sortlink(P *head) { P *p1=NULL; P *p2=head; bool flag; while(1) { p1=NULL; p2=head; flag=false; while(p2) { p1=p2; p2=p2->next; if(p2 && p2->data < p1->data) { flag=true; int t; t=p2->data; p2->data=p1->data; p1->data=t; } } if(flag==false) break; } } int main() { P a[8]={{10},{1},{12},{15},{6},{9},{4},{0}},*head; head=createlink(a,8); printf("未排序的链表数据如下:\n"); output(head); printf("\n====================\n"); sortlink(head); printf("排序后的链表数据如下:\n"); output(head); cout<<endl; system("pause"); return 0; }
输出结果显示:
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)
- C语言实现输出链表中倒数第k个节点
- C++语言实现线性表之链表实例
- STL list链表的用法详细解析
- C语言创建链表错误之通过指针参数申请动态内存实例分析
- php链表用法实例分析