这样的链表读入为什么不行??

来源:百度知道 编辑:UC知道 时间:2024/06/18 17:37:04
#include "stdio.h"
#include "malloc.h"
struct link
{
int n;
link *next;
};
link *head,*p;
int i,num;
int main()
{
scanf("%d",&num);
p=head=(link *)malloc(sizeof(link));
for (i=1;i<=num;i++)
{
p->next=(link *)malloc(sizeof(link));
scanf("%d",&p->next->n);
p->next=p->next->next;
}
p=head;
for (i=1;i<=num;i++)
{
printf("%d",p->next->n);
p->next=p->next->next;
}
return 0;
}
在输出的时候老是提示内存不能设为read,但是不知道为什么,请大家帮忙解释一下,说一下应该怎么该,谢谢大家。

指针应用的不对
p->next=p->next->next; 这个地方,应该改为p = p->next;
因为现在p->next->next指针为空,所以p->next也被赋空,所以第一个循环结束时p->next为空

#include "stdio.h"
#include "malloc.h"
struct link
{
int n;
link *next;
};
link *head,*p;
int i,num;
int main()
{
scanf("%d",&num);
p=head=(link *)malloc(sizeof(link));
for (i=1;i<=num;i++)
{
p->next=(link *)malloc(sizeof(link));
scanf("%d",&p->next->n);
// p->next=p->next->next;
p=p->next;
}
p=head;
for (i=1;i<=num;i++)
{
printf("%d\n",p->next->n);
// p->next=p->next->next;
p=p->next;
}
return 0;
}

貌似->指向的应该是个指针吧?
结构体中int n;定义的是个变量不是指针。

试着把p->next->n改成(p->next).n看看

我也不确定,现在手头的电脑没有编译环境不能帮你验证……

#inclu