关于链表的冒泡排序
来源:互联网 发布:大数据调查内容 编辑:程序博客网 时间:2024/05/21 07:52
#include <stdio.h>#include <stdlib.h>//创建链表结构体typedef struct node {int data;char name[15];struct node *pre;struct node *next;}node;//指定一个头节点node *head = NULL;//对写入链表的数据进行初始化int node_init(struct node *newnode,char a,int b){newnode -> data = b;newnode -> name[0] = a;newnode -> next = NULL;newnode -> pre = NULL;};//把数据写入链表int nodeddd(char a,int b){node *newnode = (node *)malloc(sizeof(struct node));node_init(newnode,a,b);struct node *file = head -> next;if(file == head){head -> next = newnode;head -> pre = newnode;newnode -> pre = head;newnode -> next = head;}else{while(1){file = file ->next;if(file -> next == head)break;}file -> next = newnode;head -> pre = newnode; newnode -> pre = file;newnode -> next = head;}return 0;};//把链表里的信息打印出来,分三种打印方式一种是直接打印列表里的字符串中的头字符 一种是打印链表里的data数据 一种两个都打印int show(struct node *head,int a){struct node *file ;switch(a){case 1:file = head->next;while(1){printf("the char is %c\n",file -> name[0] );file = file -> next;if(file == head)break;}break;case 2:file = head -> next;while(1){printf("the data is %d\n",file -> data );file = file -> next;if(file == head)break;}break;case 3: file = head -> next;while(1){printf("the data is %d\n",file -> data );printf("the char is %c\n",file -> name[0] );file = file -> next;if(file == head)break;}break;}return 0;}//字符冒泡排序的实现int zifumaopaohaixu(struct node *head){struct node *file = head -> next;struct node *get = file -> next;struct node *flg = head;while(1){file = head -> next;get = file -> next;while(1){if((file -> name[0]) > (get -> name[0])){get -> pre -> next = get -> next;get -> next -> pre = get -> pre;get -> pre = NULL;get -> next = NULL;get -> pre = file -> pre;get -> next = file;file -> pre -> next = get;file -> pre = get;get = file -> next;}else{file = file -> next;get = file -> next;}if(get == flg){flg = file ;break;}}if(flg -> pre == head -> next)break;}return 0;}//data冒泡排序的实现int shuzhimaopaopaixu(struct node *head){struct node *file = head -> next;struct node *get = file -> next;struct node *flg = head;while(1){file = head -> next;get = file -> next;while(1){if((file -> data) > (get -> data)){get -> pre -> next = get -> next;get -> next -> pre = get -> pre;get -> pre = NULL;get -> next = NULL;get -> pre = file -> pre;get -> next = file;file -> pre -> next = get;file -> pre = get;get = file -> next;}else{file = file -> next;get = file -> next;}if(get == flg){flg = file ;break;}}if(flg -> pre == head -> next)break;}return 0;}//主函数 int main(){head = (struct node *)malloc(sizeof(struct node));head -> pre = head;head -> next = head;char a[10] = {'z','T','t','A','u','m','k','g','s','a'};int z[10]={1,24,5,7,9,8,3,4};int i;for(i=0;i<10;i++){nodeddd(a[i],z[i]);}show(head,3);printf("\n");zifumaopaohaixu(head);show(head,1);printf("\n");shuzhimaopaopaixu(head);show(head,2);return 0;}
0 0
- 关于链表的冒泡排序
- 关于冒泡排序的优化
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序。
- 链表的冒泡排序
- 链表的排序(冒泡)
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的冒泡排序
- 链表的一种排序---冒泡排序
- 链表冒泡排序
- 链表冒泡排序
- 杭电ACM题2000遇到的一点问题
- oc中的点语法和成员变量作用域
- POJ 题目3292 Semi-prime H-numbers(打表,数学)
- 深刻理解Linux进程间通信(IPC)
- MyEclipse安装FreeMarker插件(freemarker-ide-0.9.14)
- 关于链表的冒泡排序
- Unity3D学习之(常量、异常、修饰符以及封装)
- 连接不上数据库的解决方案
- Unity3D学习之(枚举类型)
- codevs1163 访问艺术馆(树形dp)
- windows下使用vim cscope插件
- Unity3D 中Transform.Rotate与Transform.eulerAngles 的区别
- UVA Where's Waldorf?(模拟)
- 带宽 帧 场