单链表实现冒泡排序
来源:互联网 发布:车铣复合加工编程书 编辑:程序博客网 时间:2024/06/01 09:25
单链表实现冒泡排序
/************************************************************************//* 用单链表实现冒泡排序,输入为0-9的数字字符 *//************************************************************************/#include <stdio.h>#include <stdlib.h>#define PR printf //定义一个单链表结构体typedef struct node{ long data; struct node * next;}lklist;//快速排序,小的数据往前排,后的数据往后排lklist* sort(lklist * head){if (head == NULL)return NULL;lklist* p = head->next;lklist* p_pre = p;bool flag = false; //用于标记是否有交换,当数组有序的时候,提高判断效率while(p_pre->next != NULL){long temp = p_pre->data;p = p->next;while (p){ if(temp <= (p->data)){p = p->next;continue;}else{long temp_change;temp_change = p->data;p->data = p_pre->data;p_pre->data = temp_change;p = p->next;flag = true;}if (flag == false){return head;}}p_pre = p_pre->next;p = p_pre;}return head;}//向含有一个头节点的单链表中插入数据lklist* create_lklist(lklist *head){PR("please input the number of the data and end with q(Q):\n");while(1){char ch[2];scanf("%s",ch);if(ch[0] == 'q' || ch[0] == 'Q') //输入为q(Q)时停止输入break;else{long intData = strtol(ch,0,10);lklist* temp = NULL;temp = (lklist*)malloc(sizeof(struct node));temp->data = intData;temp->next = NULL; temp->next = head->next;head->next = temp;}}return head;} //打印单链表中的数据信息void printf_lklist(lklist* head){if (NULL == head){return;}lklist * p = head->next;PR("the sorted number is:\n");while (p){PR("%d ",p->data);p = p->next;}PR("\n");}//释放有数据的链表中的节点void free_lklist(lklist* head){if (NULL == head){return;}lklist * p = head->next;lklist *pre;while (p){pre = p;p = p->next;free(pre);}}void main(){ lklist *head = (struct node *)malloc(sizeof(struct node));head->next = NULL; //头节点不存放数据 head = create_lklist(head);head = sort(head);printf_lklist(head);free_lklist(head);free(head); //释放申请的头节点}
- 单链表实现冒泡排序
- 单链表实现冒泡排序
- 单链表实现冒泡排序
- C++单链表实现冒泡排序
- 冒泡排序(单链表实现)
- 单链表实现冒泡排序,C++
- 单链表实现冒泡排序算法
- 单链表实现一个冒泡排序
- 单链表的冒泡排序法实现
- ASP实现冒泡排序
- ASP实现冒泡排序
- C#实现冒泡排序
- 冒泡排序的实现
- 冒泡排序程序实现
- java实现冒泡排序
- Java实现冒泡排序
- Java实现冒泡排序
- Java实现冒泡排序
- 开发软件下载地址
- 利用ModalViewController切换View
- android解析XML文件
- 【线段树+离散化+离线方法】杭电 hdu 3333 Turing Tree
- ZOJ Problem Set - 3607 Lazier Salesgirl
- 单链表实现冒泡排序
- 建立一个带头结点的的单向链表并输出到out53.dat和屏幕上。各节点的值为对应的下表。链表的节点数及输出地文件名作为参数传入
- 基于S3C2440——SD/MMC
- 黑马程序——String类(黑马我来了之九)
- 在ContextMenu中添加/删除ListView的Item
- Android: AlertDialog
- java例程练习(一个BirthDate类 以及简单的测试程序)
- shared pool 深度解析1+
- UIAlertView文字的最简单左对齐方法