主题:链表的插入问题(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;
}
}
插入函数和输出函数如下(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;
}
}