我正在尝试使用 C 中的结构和动态内存分配来模拟堆栈(将值插入和弹出到堆栈顶部),我有这个结构:
...
#define max 5
typedef struct stack
{
int stk[max];
int top;
}STACK;
...
我成功模拟了堆栈,但是当它达到最大大小(堆栈已满)时,我想更改 max
的值,以便继续向堆栈顶部添加(推送)值堆。换句话说,我只想重新分配结构体 stk
字段中的最大值(如果可能的话)。
如有任何建议,我们将不胜感激。
最佳答案
使用int stk[max];
不是动态内存分配。
您需要有指针int * stk;
并使用malloc
初始化它。然后当需要更多内存时realloc
。当不再需要堆栈时,使用free
释放它。
关于更改结构内的数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148708/