整理无序链表使之有序的函数?
有一单链表,链表节点内有整数域和指针域,而且节点排列是无序的,设计一个函数,整理单链表,使之节点内容有序递增排列,函数如下:#define NULL 0
typedef int ELEMTYPE;
typedef struct node{
ELEMTYPE data;
struct node *next;
}LNODE,*LINKLIST;
void plist(LINKLIST L)
{
LINKLIST p,q,s;
p=L;
q=p->next->next;
s=q->next;
p->next->next=NULL;
while(1) \\此循环遇到s==NULL时结束,目的是要插入最后一
{ \\节点,否则难于实现
while((p->next->data)<=(q->data)&&p->next!=NULL)
p=p->next; \\找到要插入的节点位置
q->next=p->next; \\开始尾插入节点
p->next=q;
p=L; \\指针返回头节点
if(s==NULL)break; \\判断是否还有剩余节点,无则结束循环
q=s; \\q,s重新指向下一节点
s=s->next;
}
return 0;
}
有无错误?
[此贴子已经被作者于2006-8-27 10:05:18编辑过]