gpt4 book ai didi

c - 坚持链表练习

转载 作者:行者123 更新时间:2023-12-02 05:09:57 25 4
gpt4 key购买 nike

我编写了这个创建新节点的函数。

当我只添加一个节点时,程序可以运行,但如果我添加第二个节点,我会遇到段错误,很明显问题出在函数“add_node()”的“else”部分,但我不能弄清楚。

#include <stdio.h>
#include <stdlib.h>

typedef struct node{
char *city;
struct node *next;
}node;

node *start = NULL;
node *current;

void add_node(char *cityname) {
node *y = malloc(sizeof(node));
y->city = cityname;
y->next = NULL;
current = start;

if(start == NULL) {
start = y;
} else {
while (current != NULL) {
current = current->next;
}
current->next = y;
}
}

int main() {
add_node("Paris");
add_node("London");

current = start;

while(current != NULL) {
printf("%s\n", current->city);
current = current->next;
}
}

最佳答案

你有一个循环,一直运行到 current 为 NULL ... 然后你将 current->next 设置为 y,但是 current 一定是 NULL。

修复它的一个简单方法是将循环更改为

while (current->next != NULL){

我还要指出,您应该避免使用全局变量。 current 应该是一个局部变量,start 应该是一个参数……我只称它为 list,因为这就是它所代表的。 add_node 应该返回 list 的(可能是新的)值。

关于c - 坚持链表练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645066/

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