如何修改我的堆栈操作.(结构地址问题)



我在推送函数中遇到问题。我的代码是

struct stack_t{
DATA_TYPE size;
DATA_TYPE top;
DATA_TYPE *arr;
}    
void push(stack_t* s, DATA_TYPE item) {
if (is_full(s) == true ) {
exit(1);
}
else {
s->arr[++(s->top)] = item;
}
}

s->arr[++(s->顶部(]=项目有错误。(特别是粗体部分(上面写着读取访问错误。我发现我必须用地址写代码,但我用值写代码。但我不知道如何更改我的代码。如何表达Struct数组地址?

首先,size应该是int值,而不是DATA_TYPE。然后在推送中,您应该使用s->arr[++(s->size)]。但是,您仍然需要确保堆栈和arr被正确初始化/分配。我想知道你想如何实现你的pop(),以及top将如何运作。

最新更新