#include <bits/stdc++.h>
using namespace std;
#define max 100
#define ok 1
#define error 0
//顺序栈的存储结构
typedef struct
{
int *base;
int *top;
int stacksize; //可用最大容量
} SqStack;
//初始化
void InitStack(SqStack &S)
{
S.base = new int[max];
S.top = S.base;
S.stacksize = max;
}
//入栈
int Push(SqStack &S, int e)
{
if (S.top - S.base == S.stacksize)
{
return 0; //栈满
}
*S.top = e;
S.top++;
return ok;
}
//出栈
int Pop(SqStack &S, int &e)
{
if (S.top == S.base)
{
return 0; //栈空
}
S.top--;
e = *S.top;
return ok;
}
//取栈顶元素
int GetTop(SqStack S)
{
if (S.top != S.base) //非栈空时返回
return *(S.top - 1); //++会改变指针自身值,而-1不会改变
}
//遍历输出栈
void printStack(SqStack S)
{
printf("栈底:");
int *p = S.base;
while (p != S.top)
{
cout << *p << " ";
p++;
}
cout << endl;
}
int main()
{
SqStack S;
int e;
InitStack(S);
cout << "(-1表示结束)" << endl;
cout << "请输入一个要入栈的元素:" << endl;
scanf("%d", &e);
while (e != -1)
{
Push(S, e);
cout << "请输入一个要入栈的元素:" << endl;
cin >> e;
}
printStack(S);
cout << "出栈测试:" << endl;
Pop(S, e);
printStack(S);
cout << "取栈顶元素测试:" << endl;
e = GetTop(S);
cout << "取出的栈顶元素为:" << e << endl;
}
数据结构-顺序栈
最新推荐文章于 2024-10-04 23:25:33 发布