1.题目
2.思路—双栈
思路与双队列实现栈类似:
将一个栈当作输入栈,用于压入push传入的数据;另一个栈当作输出栈,用于pop和peek操作。
每次 pop或 peek时,若输出栈outStack为空则将输入栈inStack的全部数据依次出栈并入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。
图解:
3.参考代码
typedef struct {
int* stk;
int stkSize;
int stkCapacity;
} Stack;
Stack* stackCreate(int cpacity) {
Stack* ret = malloc(sizeof(Stack));
ret->stk = malloc(sizeof(int) * cpacity);
ret->stkSize = 0;
ret->stkCapacity