// 假设一个堆栈的总个数不会超过1000,用数组实现堆栈数据结构。
struct Stack{
int index;
int arr[1000];
};
// 注意初始化方法
struct Stack stack = { -1, '0'};
void push(struct Stack* stack, int val)
{
++(stack->index);
stack->arr[stack->index] = val;
}
bool pop(struct Stack* stack, int* val)
{
if (stack->index == -1)
{
return false;
}
else
{
*val = stack->arr[stack->index];
--(stack->index);
return true;
}
}
bool top(struct Stack* stack, int* val)
{
if (stack->index == -1)
{
return false;
}
else
{
*val = stack->arr[stack->index];
return true;
}
}
void clear(struct Stack* stack)
{
stack->index = -1;
}
注意:
1、初始化结构体用struct Stack stack= { -1, ‘0’},而不是struct Stack* stack。若使用*,只是定义了指针,而stack中的数组空间未创建,需要另外malloc出空间;
2、调用方式:push(&symbol, 5),调用时需要取址;
3、clear时只需要保证不能继续pop即可,arr空间一直存在,其中存储的值不影响后续pop和push;