-1

推送功能有问题。我的代码是

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->top)] = item; 有错误。(特别是粗体部分)它说读取访问错误。我发现我必须在地址中编写代码,但我在值中编写代码。但我不知道如何更改我的代码。我如何表达 Struct 数组地址?

4

1 回答 1

0

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

于 2021-07-19T08:40:33.573 回答