gpt4 book ai didi

C 代码 : cannot print out the whole linked list as I expected

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:43 25 4
gpt4 key购买 nike

我已经盯着那些代码看了很长时间,但它仍然不能像我预期的那样工作。该代码应该只允许用户通过输入链表的长度和每个节点的数据来初始化链表,然后打印出所有数据。

#include "stdio.h"
#include "stdlib.h"

typedef struct Node {
int data;
struct Node* next;
} Node;

int n,x,i;
Node* head = (Node*)malloc(sizeof(Node));

void Init(int x, Node* temp){
Node* newNode = (Node*)malloc(sizeof(Node));
temp->data = x;
temp->next = newNode;
temp = newNode;
}

void Print(){
Node* temp = head;
while(temp != NULL){
printf("%d ", temp->data);
temp = temp->next;
}
}

int main(){
printf("Please enter the number of nodes in the linked list:\n");
scanf("%d", &n);
Node* temp = head;
printf("Please enter the data of the node:\n");
for(i=0;i<n;i++){
scanf("%d", &x);
Init(x,temp);
}
Print();
}

我认为 head 节点可能存在一些问题。当我运行代码时,数据似乎可以毫无问题地插入,但它无法从 Print() 函数一开始就打印出所有内容。

这是我运行它时的样子。

Please enter the number of nodes in the linked list:
4
Please enter the data of the node:
1
2
3
4
4 -842150451 Press any key to continue

我想我可能在这里遗漏了一些非常基础的东西,如果我遗漏了,我很抱歉,因为我是学习 C 语言和数据结构的新手。

最佳答案

这个函数

void Init(int x, Node* temp){
Node* newNode = (Node*)malloc(sizeof(Node));
temp->data = x;
temp->next = newNode;
temp = newNode;
}

不会更改调用函数中的 Node。不仅如此,newNode 现在是内存泄漏。

您的代码需要一些修改。 Init() 可以设计为在列表末尾或列表开头添加项目。您必须决定要实现哪种行为。之后,需要对 Init 进行一些修改以匹配预期的行为。

关于C 代码 : cannot print out the whole linked list as I expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569946/

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