gpt4 book ai didi

c - 堆栈一遍又一遍地循环

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

我在 C 中做堆栈时陷入困境。如果有人能帮助我,我将不胜感激。这是我的代码:

标题

typedef struct stackEl stackEl;
typedef struct Task Task;
struct stackEl{
struct Task *zad;
struct stackEl *last;
};

struct Task{
int x;
int y;
};

来源

void add(stackEl *main, Task *adding)
{
stackEl tmp;
tmp.last= main;
tmp.zad = adding;
*main=tmp;
}

这个通过一一指向彼此来创建无限数量的元素,而不是将单个元素添加到堆栈中。我不知道如何修复它。我尝试这样做:

void add(stackEl *main, Task *adding )
{
stackEl *tmp;
tmp = (stackEl*)malloc(sizeof(stackEl));
tmp->last= main;
tmp->zad = adding;
main=tmp;
}

使用此方法将元素添加到堆栈顶部,但不会修改主函数中的堆栈。

最佳答案

第二个版本更接近事实。您需要像您一样为添加到堆栈中的每个元素分配内存。仍然请注意,在第二个版本中,您仅修改指针的本地副本,而不是实际更改该指针。您应该传递一个指针到指针(即 StackE1**),然后执行 *main = tmp

关于c - 堆栈一遍又一遍地循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266630/

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