您的位置:首页 > 其它

链表实现冒泡排序

2012-07-19 21:28 106 查看
#include"stdio.h"
#include"stdlib.h"

typedefstructnode
{
intnum;
structnode*next;
}node;

node*head=NULL;
node*last=NULL;

voidprint()
{
node*p=head;
while(p!=NULL)
{
printf("%d",p->num);
p=p->next;
}
printf("\n");
}

voidcreate()
{
intn=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--;
}
}

voidsort()
{
node*p,*q,*front;
inti,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;
}
}
}

intmain()
{
printf("正在产生随机数\n");
create();
printf("排序前:\n");
print();
sort();
printf("排序后:\n");
print();
return0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: