#include<iostream>
using namespace std;
#define Maxsize 100
typedef struct SqStack{
int *base;//栈底指针
int *top; //栈顶指针
}SqStack;
//初始化栈
bool initStack(SqStack &S)
{
//为顺序栈分配一个最大容量为Maxsize的空间,使栈底指针指向空间的基地址
S.base = new int[Maxsize];
//分配空间失败,返回-1
if (!S.base) return -1;
//top初始为base,代表空栈
S.top = S.base;
return true;
}
//入栈操作
bool pushStack(SqStack &S,int e)
{5
//栈满
if (S.base - S.top >= Maxsize) return false;
*(S.top++) == e;
return true;
}
//出栈操作
bool popStack(SqStack &S,int &e)
{
//栈空,不弹栈
if (S.base == S.top) return false;
//先将栈顶指针减一,再将栈顶元素赋值给e
e = *(--S.top);
return true;
}
//取栈顶元素
int getTop(SqStack S)
{
//栈不空
if (S.top != S.base) return *(S.top - 1);
else return -1;
}
int main()
{
int n,x;
SqStack S;
initStack(S);
cin >> n;
//入栈
while (n--)
{
cin >> x;
pushStack(S,x);
}
//出栈
while (S.top != S.base)
{
//输出栈顶元素,然后栈顶元素出栈
cout << getTop(S) << " ";
popStack(S,x);
}
return 0;
}
关于栈的一些基本操作
猜你喜欢
转载自blog.csdn.net/smallrain6/article/details/106204629
今日推荐
周排行