gpt4 book ai didi

c - 使用链表在堆栈上的推送操作失败

转载 作者:行者123 更新时间:2023-12-01 12:27:21 24 4
gpt4 key购买 nike

我正在尝试使用单链表创建堆栈,我的推送操作没有将数据插入链表

这是我目前尝试过的,

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

推送方法

void push(node *root, int data) {
if(root == NULL) {
root = (node *) malloc (sizeof(struct element));
root->data = data;
root->next = NULL;
}
else {
node *temp = (node *) malloc (sizeof(struct element));
temp->data = data;
temp->next = root;
root = temp;
}
}

在我的 main 方法中,我没有 malloc 头指针,这就是我调用 push 方法的方式,

push(head, data);

如何使推送操作起作用?

最佳答案

push函数中修改了root指针。此值不会传播到 main。一种方法是返回 root 指针。

node* push(node *root, int data) {
if(root == NULL) {
root = (node *) malloc (sizeof(struct element));
root->data = data;
root->next = NULL;
}
else {
node *temp = (node *) malloc (sizeof(struct element));
temp->data = data;
temp->next = root;
root = temp;
}
return root;
}

在 main 中,你需要这样调用它,

head = push(head, data);

关于c - 使用链表在堆栈上的推送操作失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982512/

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