链表实现冒泡排序

来源:互联网 发布:张晓蓬 知乎 编辑:程序博客网 时间:2024/06/05 08:08
#include"stdio.h"#include"stdlib.h"typedef struct node{    int num;    struct node *next;}node;node *head = NULL;node *last = NULL;void print(){    node *p = head;    while( p != NULL)    {        printf("%d ",p->num);p = p->next;    }    printf("\n");}void create(){    int n = 6;    node *p;    while(n)    {        p = (node *)malloc( sizeof(node) );p->num = rand()%50+1;if( head == NULL){    head = p;    last = p;}else{    last->next = p;    last = p;}last->next = NULL;n--;    }}void sort(){    node *p,*q,*front;    int i,j,flag;    if( head == NULL || head->next == NULL)    {        return;    }    for( i = 0; i < 6 ; i++)    {        p = head;        front = NULL;q = p->next;flag = 0;        for( j = 0 ; j < 6-i-1;j++){    if( p->num > q->num)    {        flag++;        if(front == NULL){    p->next = q->next;                    q->next = p;    head = q;}else{    p->next = q->next;    q->next = p;    front->next = q;}front = q;q = p->next;    }    else    {        front = p;        p = q;        q = p->next;    }}if( flag == 0){    break;}    }}int main(){    printf("正在产生随机数\n");    create();    printf("排序前:\n");    print();    sort();    printf("排序后:\n");    print();    return 0;}
 
 


 

原创粉丝点击