gpt4 book ai didi

c - 不知道创建链表

转载 作者:行者123 更新时间:2023-11-30 21:47:12 25 4
gpt4 key购买 nike

我正在尝试创建链表,但我无法做到这一点。当我尝试打印它时,它仍然只打印第一个节点。我知道这意味着第一个没有引用下一个。如果有人帮助我,我会很高兴。

代码如下:

struct book {
char *author;
char *title;
int year;
struct book *next;
};

struct book *insert_books() {
char c,x;
int i=0;
struct book *first=(struct book*)malloc(sizeof(struct book));

struct book *current=(struct book*)malloc(sizeof(struct book));

struct book *new=(struct book*)malloc(sizeof(struct book));

first->author=(char*)malloc(30*sizeof(char));

first->title=(char*)malloc(50*sizeof(char));

first->next=NULL;

i=0;
scanf("%d\n",&first->year);

c='a';

while(c!='\n') {
c=getchar();
first->author[i]=c;
i++;
}

first->author[i]='\0';
i=0;
c='a';

while(c!='\n') {
c=getchar();
first->title[i]=c;
i++;
}

first->author[i]='\0';
current=first;
printf("\nWanna continue?(y/n)");
scanf("%c",&x);

while(x=='y') {
new->author=(char*)malloc(30*sizeof(char));
new->title=(char*)malloc(50*sizeof(char));
new->next=NULL;
i=0;
scanf("%d\n",&new->year);
c='a';

while(c!='\n') {
c=getchar();
new->author[i]=c;
i++;
}

new->author[i]='\0';
i=0;
c='a';

while(c!='\n') {
c=getchar();
new->title[i]=c;
i++;
}

new->author[i]='\0';
current->next=new;
current=current->next;
printf("\nWanna continue?(y/n)");
scanf("%c",&x);

}
return first;

}

最佳答案

您正在将 currentnext 指针值附加到其自身。因此,当您调用 current 的下一本 book 时,它仍然是 current。此外,您应该分解代码,而不是像

这样的冗余过程
while(c!='\n') {
c=getchar();
first->author[i]=c;
i++;
}

最后,由于您的复制/粘贴,我认为您忘记将 first->author[i]='\0'; 更改为 first->title[i] ='\0';

关于c - 不知道创建链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24033559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com