回 帖 发 新 帖 刷新版面

主题:[讨论]一个单链表的处理函数

有一个带头链表,实现以表中的第一个元素为标准,单链表中所有小于第一个元素的节点均放在第一个元素之前,所有大于第一个结点的放在第一个元素之后
我的算法:
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;
    }
}
各位看看我的程序那个地方出错了,请指点一下!!!谢谢!!!!

回复列表 (共2个回复)

沙发

r=q;
r->next=p;
q=q->next;
结果是:q = p

板凳

[quote]r=q;
r->next=p;
q=q->next;
结果是:q = p
[/quote]

我来回复

您尚未登录,请登录后再回复。点此登录或注册