首先得思考功能:
1、栈1不满,都可入队
2、栈1满,栈2空,可入队,前提是数据从栈1入到栈2一个不留
3、栈2 不空栈,栈1一定不能到栈2
#include <stdio.h>
#include <stdlib.h>
#inlcude <stdbool.h>
#define TYPE int
// 设计顺序栈结构
typedef struct ArrayStack
{
TYPE* ptr; // 存储元素的内存地址
size_t cal; // 栈的容量
size_t top; // 栈顶位置,即接下来要入栈的位置下标
}ArrayStack;
// 创建顺序栈
ArrayStack* create_array_stack(size_t cal)
{
// 为顺序栈分配内存
ArrayStack* stack = malloc(sizeof(ArrayStack));
// 为存储元素分配内存
stack->ptr = malloc(cal*sizeof(TYPE));
// 初始化结构体的容量
stack->cal = cal;
// 初始化结构体栈顶位置
stack->top = 0;
// 返回一个顺序栈
return stack;
}
// 销毁顺序栈
void destory_array_stack(ArrayStack* stack)
{
free(stack->ptr);
free(stack);
}
// 栈空
bool