回 帖 发 新 帖 刷新版面

主题:链表的插入问题(SOS!)

各位高手帮帮忙,我是菜鸟哈。就是个插入数的程序,还要保持原来链表递增有序,可是当插入的数比最后一个还大的时候,执行就要出错,编译都没有错,哪位高人指点迷津啊?
插入函数和输出函数如下(node 是链表结点的数据类型)
void inserts_l(node *h,int x)
{
    node *s,*q,*p;
    p=h->next;
    if (x<=p->data)
    {
        s=(node*)malloc(sizeof(node));
        s->next=NULL;
        s->data=x;
        s->next=p;
        h->next=s;
    }
    else
    {
    while(x>p->data&&p!=NULL)
    {
        q=p;
        p=p->next;
    }
    [size=2][color=FF0000]if (p==NULL)
    {
        s=(node*)malloc(sizeof(node));
        s->data=x;
        s->next=NULL;
        q->next=s;
    }[/color] [/size]   
    else 
    {
        s=(node*)malloc(sizeof(node));
        s->data=x;
        q->next=s;
        s->next=p;
    }
    }
}
void print(node *h)
{
    node *p;
    p=h;
    p=p->next;
    while (p!=NULL)
    {
    
        printf ("%d\n",p->data);
        p=p->next;
    }
}

回复列表 (共2个回复)

沙发

}
    if (p==NULL)
    {
        s=(node*)malloc(sizeof(node));
        s->data=x;
        s->next=NULL;
        p->next=s;
    }    
你红色的地方应该是这样吧.

板凳


就原来那样也可以,把WHILE里面的条件换个顺序就行了

我来回复

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