gpt4 book ai didi

c - 用 C 将项目插入堆栈

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

这是我的 push 函数,它接收一个堆栈和一个 int 参数,将 int 转换为 stackNode 的一部分,并返回一个包含添加的新节点的新堆栈(StackNode 和 Stack 已经正确初始化):

Stack push(Stack stk,int data){
struct StackNode *top = stk.top;
struct StackNode *node;
node->data = data;
node->nextNode = top;
stk.top = node;
stk.count++;
return stk;
}

我遇到的问题是,每次我运行 push 函数时,它都会将堆栈中的其他 StackNode 项作为我运行的参数覆盖。

例如:

push(stk, 3): stack output = 3 //good so far
push (stk, 4): stack output= 4 4//the correct output would be 3 4!
push(stk, 56): stack out put= 56 56 56 //what's going on!

我做错了什么,请帮忙

最佳答案

您没有为节点分配内存。添加内存分配。

Stack push(Stack stk,int data){
struct StackNode *top = stk.top;
struct StackNode *node = malloc( sizeof( struct StackNode ) );

node->data = data;
node->nextNode = top;
stk.top = node;
stk.count++;

return stk;
}

或者您可以添加成功分配的检查。

Stack push(Stack stk,int data){
struct StackNode *top = stk.top;
struct StackNode *node = malloc( sizeof( struct StackNode ) );

if ( node != NULL )
{
node->data = data;
node->nextNode = top;
stk.top = node;
stk.count++;
}

return stk;
}

我想最初 Stack 类型对象的数据成员 top 被初始化为 NULL。

关于c - 用 C 将项目插入堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946691/

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