数据结构-顺序栈的操作实践
数据结构-顺序栈的操作实践
采用顺序存储实现栈的初始化、入栈、出栈操作
#include<iostream>
using namespace std;
#define MAXSIZE 50
// 定义顺序栈的结构
typedef struct {
int data[MAXSIZE];
int top;
}SqStack;
/** * 初始化顺序栈 * @param S 顺序栈S */
void InitStack(SqStack& S) {
S.top = -1; // 初始化栈顶指针
}
/** * 顺序栈入栈 * @param S 顺序栈S * @param x 入栈元素x * @return 成功返回真,否则返回假 */
bool Push(SqStack& S, int x) {
if (S.top == MAXSIZE - 1) // 栈满
return false;
S.data[++S.top] = x; // 指针先加1,再入栈
return true;
}
/** * 顺序栈出栈 * @param S 顺序栈S * @param x 通过x将栈顶元素返回 * @return 成功返回真,否则返回假 */
bool Pop(SqStack& S, int& x) {
if (S.top == -1) // 栈空
return false;
x = S.data[S.top--]; // 先出栈,指针再减1
return true;
}
int main() {
int n;
cin >> n;
SqStack S;
InitStack(S);
int x;
cout << "入栈:";
for (int i = 0; i < n; i++)
{
cin >> x;
Push(S, x);
}
cout << "出栈:";
for (int j = 0; j < n; j++)
{
Pop(S, x);
cout << x << " ";
}
cout << endl;
return 0;
}
创作不易,喜欢的话加个关注点个赞,谢谢谢谢谢谢!