新しいノードを作成するこの関数を作成しました。
ノードを1つだけ追加するとプログラムは機能しますが、2つ目のノードを追加するとセグメンテーション違反が発生するため、問題は関数「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;
}
}