用冒泡法对单链表进行排序

来源:百度知道 编辑:UC知道 时间:2024/06/02 03:55:08
typedef struct LNode
{
int id;
char name[10];
int tel;
struct LNode *next;
}LinkList;
LinkList *p;
按照学号从小到大进行排序,用冒泡法,请教高手,希望能给出具体代码

先检验id的大小,如果小的在后面的话,就将两结点的所有数据交换,达到排序的目的,以下是代码:
struct LinkList *sort(struct LinkList *head)
{
struct LinkLinst *p1,*p2;
int i,j;
int tel0,id0;
char string[10];
for(i=0;i<n-1;i++)
{
p1=head;
for(j=n-1;j>0;j--)
while(p1->next!=NULL)
{
p2=p1;p1=p1->next;
if(p2->id<p1->id)
{
tel0=p1->tel;
p1->tel=p2->tel;
p2->tel=tel0;
strcpy(string,p1->name);
strcpy(p1->name,p2->name);
strcpy(p2->name,string);
id0=p1->id;
p1->id=p2->id;
p2->id=id0;
}
}
}
return(head);

int main(void)
{
int temp;
LNode *head=new LNode;
int i,j;
for(i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
if (p->id<p->next->id)
{
temp=p->next->id;
p->next->id=p->i