永发信息网

亲,帮我看一下我的 链表 产生的段错误是什么原因

答案:2  悬赏:50  手机版
解决时间 2021-03-03 02:24
我是在知道上看到你帮别人回答的,所以直接向你提问啦,耽误亲一会时间
代码如下:
#include
#include
typedef struct Node{
int data;
struct Node *next;
}Node;
Node *create(int n);
void insert(Node *head,int data,int n);
void display(Node *head);
void delete(Node *head,int n);
void my_free(Node *head);
int main()
{
Node *head;
int n;
printf("请输入元素个数:");
scanf("%d",&n);
printf("请输入数据:\n");
create(n);
display(head);
my_free(head);
return 0;
}

Node *create(int n)
{
Node *head,*pnew; int i;
head = (Node*)malloc(sizeof(Node));
head -> next = NULL;
for(i = 0;i < n; i++)
{
pnew = (Node*)malloc(sizeof(Node));
if (pnew == NULL)
printf("内存申请失败.");
else{
pnew -> next = NULL;
scanf("%d",&(pnew -> data));
pnew ->next = head -> next;
head -> next = pnew;
}
}return head;
}

void insert(Node *head,int data,int n)
{
Node *p,*pnew; int j = 0;
p = head;
while((p != NULL)&&(j < n)) {
p = p -> next;
j ++;
}
pnew -> next = p -> next;
p ->next = pnew;
pnew ->data = data;
}

void delete(Node *head,int n)
{
Node *p,*temp;int j = 0;
p = head;
while((j < n)&&(p != NULL) ){
p = p -> next;
j++;
}
temp = p -> next;
p -> next = temp -> next;
free(temp);
temp = NULL;
}

void my_free(Node *head)
{
Node *p,*q; p = head;
while(p != NULL)
{
q = p -> next;
free(p);
p = q;
}
}

void display(Node *head)
{
Node *p;
p = head -> next;
while(p != NULL)
{
printf("%d ",p -> data);
p = p -> next;
}
}运行结果:
请输入元素个数:3
请输入数据:
1
2
3
段错误
最佳答案
int main()
{
Node *head;
int n;
printf("请输入元素个数:");
scanf("%d",&n);
printf("请输入数据:\n");
create(n);
display(head);
my_free(head);
return 0;
}
这一段主函数代码中的create()函数所返回的值并没有赋给结构变量head,所以之后的函数所访问的结构变量是不存在的,所以会出现段错误,提示段错误主要是后面调用的free()中的变量并不存在空间地址,所以提示段错误。
全部回答

struct student {  int num;  int score;  struct student *p; }; int main() {  struct student a,b;  struct student *head;  struct student *m;  a.num=

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
急求system clock has been set back问题解决
中华民族具有重诺守信的优良品质。下列名言中
天朗文化地址在什么地方,想过去办事
孤单又灿烂的神里《Hush》英语歌词和中文歌词
一加以等于几?
我要开店!求店名??
招聘要园林专业的人不?
古灵泉寺地址在什么地方,想过去办事
老师,为什么继母要叫继母,不叫继妈
【清音】英文字母中哪些字母是元音哪些字母是
衡一国际购物中心地址在什么地方,想过去办事
旺仔牛奶多少钱一盒
猫狗的发育宝通用吗
二胡价格一千左右的是那种
剑魔有武器精通吗
推荐资讯
什么是玄关一窍?
安徽五河县为什么叫五河县
中国最有钱的人是谁
带有人身体部位的成语
王家河街道怎么去啊,有知道地址的么
求龙华去深圳市野生动物园最短路线
看鱼鳞片能分辨种类吗
想买一辆捷安特山地车,预算在2000左右!推荐
单选题Howexcitingitis________inHawaii!A.
胸椎稍向右侧弯怎么办?
小刚2015年年入该校小学部,顺序号是0325 ,小
妇女节送老婆红包88.88可以吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?