首页 新闻 会员 周边 捐助

c语言动态单项链表输出问题

0
悬赏园豆:5 [已解决问题] 解决于 2021-04-27 09:11

求助大佬,关于链表输出问题:
输出最后一个name的值显示是P?
以下是在MinGW-W64-builds-4.3.5中输出的结果

//name:asd
//number:1
//是否继续(y键继续,任意键退出):n
//P?0

以下为代码部分

include <stdio.h>

include <stdlib.h>

define LEN sizeof(struct Node)

int count = 0;

typedef struct Node
{
char name[20];
int num;
struct Node *next;
} NO;

NO *input()
{
NO *head;
NO *p1, *p2;
head = NULL;
char pd = 'y';//判断是否继续创建链表
char ch;
p2 = (NO *)malloc(LEN);
while (pd == 'y' || pd == 'Y')
{
p1 = (NO *)malloc(LEN);
printf("name:");
scanf("%s", &p1->name);
ch = getchar();
printf("number:");
scanf("%d", &p1->num);
ch = getchar();
count++;
if (count == 1)
{
head = p1;
}
else
{
p2->next = p1;
}
p2 = p1;
printf("是否继续(y键继续,任意键退出)😊;
scanf("%c", &pd);
ch = getchar();
}
p2->next = NULL;
free(p1);
return (head);
}

int main(int argc, const char *argv[])
{
NO *pr;
pr = (NO *)malloc(LEN);
pr = input();
while (pr != NULL)
{
printf("%s\t", pr->name);
printf("%d\n", pr->num);
pr = pr->next;
}
}

穆娅的主页 穆娅 | 初学一级 | 园豆:197
提问于:2021-04-25 19:44
< >
分享
最佳答案
1

删除: free(p1); 这行就可以了

收获园豆:5
华-_- | 菜鸟二级 |园豆:207 | 2021-04-27 08:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册