#include<stdio.h>
#include<time.h>
#define ElemType int
struct node
{
ElemType data;
struct node * next;
};
typedef struct node NODE;
NODE * CreateLinkList(int n)
{
int i;
NODE *p,*q;
ElemType a;
q=(NODE *)malloc(sizeof(NODE));
a=rand()%20;
q->data = a;
q->next=NULL;
for(i=n-1;i>=1;i--)
{
p=(NODE *)malloc(sizeof(NODE));
a=rand()%20;
p->data=a;
p->next=q;
q=p;
}
return q;
}
NODE * InsertLinkList(NODE * head,ElemType x,ElemType y)
{
NODE *s,*p,*q;
s=(NODE *)malloc(sizeof(NODE));
s->data=y;
s->next=NULL;
for(p=head;p!=NULL;p=p->next)
printf("%d\n",p->data);
printf("\n");
if(head==NULL)
head=s;
else if (head->data == x)
{
s->next = head;
head = s;
}
else
{
q=head;
p=head->next;
while(p!=NULL&&p->data!=x) {
q=p;
p=p->next;
}
if(p->data==x)
{
s->next=p;
q->next = s;
}
else
{
q->next=s;
}
}
return head;
}
void main()
{
ElemType a;
NODE * head,*p;
srand((unsigned)time(NULL));
head=CreateLinkList(10);
for(p=head;p!=NULL;p=p->next)
printf("%d\n",p->data);
printf("%10d\n",a=rand()%20);
head=InsertLinkList(head,a,99);
for(p=head;p!=NULL;p=p->next)
printf("%d\n",p->data);
}程序初步调试,发现InsertLinkList函数的while循环里出错,但不知道具体哪里错误。求牛人解决
1 回答
泡面大减价
TA贡献1条经验 获得超1个赞
问题已解决:
当p==NULL,(第2页第6行)if中条件p->data==x访问了p->data,而当p==NULL,访问是非法的。
修改方案:条件p->data==x成立说明p!=NULL,把条件改为p!=NULL即可
- 1 回答
- 0 关注
- 1173 浏览
添加回答
举报
0/150
提交
取消