#include <stdio.h>
#define MaxLength 50
typedef int elemType;
typedef struct {
elemType data[MaxLength];
int top;//指向栈顶
}SqStack;
bool initStack(SqStack& stack) {
stack.top = -1;
return true;
}
bool isEmpty(SqStack stack) {
if (stack.top == -1)
{
return true;
}
return false;
}
bool push(SqStack &stack,elemType num) {
//判断栈是否满
if (stack.top > MaxLength - 1) {
printf("栈已满,无法进行插入");
return false;
}
stack.data[++stack.top]=num; //top先++,指向下一位
return true;
}
int Pop(SqStack& stack) {
//判断栈是否为空
if (stack.top==-1)
{
printf("栈为空,无法进行弹栈");
return 0;
}
int result;
result = stack.data[stack.top--]; //先将栈顶元素取出,然后top--
return result;
}
int GetTop(SqStack stack) {
if (isEmpty(stack)) {
return 0;
}
return stack.data[stack.top];
}
int main() {
/*
顺序存储实现栈
*/
SqStack stack;
initStack(stack);//初始化栈
//进栈
push(stack,1);
push(stack,2);
push(stack,3);
//弹栈(出栈)
Pop(stack);
Pop(stack);
//获取栈顶元素
int result=GetTop(stack);
printf("%d", result);
return 0;
}
推荐一个网站:动画演示各种数据结构的操作
本人只是为了考研复习方便,在此记录,小菜鸡一个,勿喷!