主题:[讨论]一个单链表的处理函数
有一个带头链表,实现以表中的第一个元素为标准,单链表中所有小于第一个元素的节点均放在第一个元素之前,所有大于第一个结点的放在第一个元素之后
我的算法:
typedef struct Node
{
int data;
struct Node *next;
}Node,*linklist;
//算法实现
void reagain(linklist l)
{
linklist p,q,r;
p=l->next;//p为链表的第一个结点
r=l;//r指向所有小于第一个结点的最后一个结点
l->next=NULL;//置单链表初始为空
q=p->next;
while(q!=NULL)
{
if(q->data <= p->data)
{
r->next=q;
p->next=q->next;
r=q;
r->next=p;
q=q->next;
}
else
{
q=q->next;
}
q=q->next;
}
}
各位看看我的程序那个地方出错了,请指点一下!!!谢谢!!!!
我的算法:
typedef struct Node
{
int data;
struct Node *next;
}Node,*linklist;
//算法实现
void reagain(linklist l)
{
linklist p,q,r;
p=l->next;//p为链表的第一个结点
r=l;//r指向所有小于第一个结点的最后一个结点
l->next=NULL;//置单链表初始为空
q=p->next;
while(q!=NULL)
{
if(q->data <= p->data)
{
r->next=q;
p->next=q->next;
r=q;
r->next=p;
q=q->next;
}
else
{
q=q->next;
}
q=q->next;
}
}
各位看看我的程序那个地方出错了,请指点一下!!!谢谢!!!!