gpt4 book ai didi

c - 最简单的链表创建和打印数据

转载 作者:行者123 更新时间:2023-11-30 15:29:51 25 4
gpt4 key购买 nike

下面是一个简单的 C 代码段,用于创建一个链接列表并打印列表中包含的所有元素。

要求用户输入整数数据,直到输入零,标志着用户输入结束;一旦数据保存到链表中,程序就会打印链表中存储的所有元素,然后完成执行。

我无法让它运行,每次出现“段错误”错误时,请检查并告诉我哪里错了(使用gcc 4.8.2)

代码:

struct node
{
int data;
struct node * next;
};

struct node * createLinkedList()
{
int x;
struct node * start;
start = NULL;
printf("Input 0 to end, Insert elements :\n");

for(scanf("%d", &x); x ;scanf("%d", &x))
{
struct node * temp = (struct node *) malloc(sizeof(struct node));
if (temp)
{
temp->data = x;
temp->next = NULL;

if(start == NULL) {
start = temp;
} else {
start->next = temp;
start = temp;
}
}
}

return start;
}

void printLinkedList(struct node * start)
{
if (start == NULL) {
printf("Linked List is empty!\n");
} else {
printf("\nPrinting Linked List : \n");
struct node * s;
s = start;
while(s != NULL)
{
printf("%d\n", s->data);
s = s->next;
}
}
}

int main(int argc, char const *argv[])
{
struct node * start;
start = NULL;
start = createLinkedList();
printLinkedList(start);
return 0;
}

最佳答案

这部分代码

    if(start == NULL) {
start = temp;
} else {
start->next = temp;
start = temp;
}

无效。一定有

    if(start == NULL) {
start = temp;
} else {
temp->next = start;
start = temp;
}

您还需要一个删除列表中所有节点的函数。

关于c - 最简单的链表创建和打印数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001981/

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