链表的冒泡排序

来源:互联网 发布:mac版qq群文件 编辑:程序博客网 时间:2024/05/01 20:16
//Filename:BubleSort.cpp//Writed by CaoLichen//冒泡排序练习,数据以链表的结构存储#include<stdio.h>#include<stdlib.h>//结点结构类型typedef struct LNode{int data;struct LNode *next;//指向后继结点}SLink;//建立线性表,void CreateLink(SLink *head,int n){SLink *tmp;for(; n > 0; n--){tmp = (SLink *)malloc(sizeof(SLink));printf("请输入数据:");scanf("%d",&tmp->data);tmp->next = head->next;//头插法,逆序排放head->next = tmp;}printf("建立线性表成功!\n");}//冒泡排序,从大到小排序,计数器countvoid BubleSort(SLink *head){int count = 0;//计数器,初始为0int swap;SLink *tmp;while(1){count = 0;//泡泡计数器归零tmp = head->next;while(tmp->next != NULL){if(tmp->data < tmp->next->data){swap = tmp->data;tmp->data = tmp->next->data;tmp->next->data = swap;count ++;//完成一次冒泡}tmp = tmp->next;//前进一下}if(count == 0){break;}}printf("排序成功!\n");}//打印线性表void PrintLink(SLink *head){head = head->next;while(head != NULL){printf("%d\n",head->data);head = head->next;}printf("打印线性表成功!\n");}int main(){SLink *head;//头结点及其初始化head = NULL;head = (SLink *)malloc(sizeof(SLink));head->next = NULL;int n;printf("请输入数据量:");scanf("%d",&n);CreateLink(head,n);//建立线性表,存放需要排序的数据PrintLink(head);//打印线性表BubleSort(head);//冒泡排序,从大到小PrintLink(head);//打印线性表return 0;}

0 0
原创粉丝点击