c++代码实现顺序栈的基本操作:栈S的初始化;判断是否栈空是否栈满;取栈顶元素,并返回该元素;将值为x的元素入栈;出栈,并返回出栈的元素;打印所有栈元素。
时间: 2024-02-13 17:02:17 浏览: 77
C++实现顺序栈的操作
好的,我来给您提供相应的代码:
```
#include<iostream>
using namespace std;
#define MaxSize 100 // 定义栈的最大容量
typedef struct {
int data[MaxSize]; // 存放栈中元素
int top; // 栈顶指针
}SqStack;
// 初始化栈
void InitStack(SqStack &S){
S.top = -1; // 将栈顶指针置为-1,表示栈为空
}
// 判断栈是否为空
bool StackEmpty(SqStack S){
if(S.top == -1)
return true;
else
return false;
}
// 判断栈是否已满
bool StackFull(SqStack S){
if(S.top == MaxSize - 1)
return true;
else
return false;
}
// 取栈顶元素并返回该元素
bool GetTop(SqStack S, int &x){
if(S.top == -1)
return false; // 栈为空,取栈顶元素失败
else{
x = S.data[S.top]; // 将栈顶元素取出
return true; // 取栈顶元素成功
}
}
// 将元素x入栈
bool Push(SqStack &S, int x){
if(S.top == MaxSize - 1)
return false; // 栈已满,入栈失败
else{
S.top++; // 栈顶指针加1
S.data[S.top] = x; // 将元素x压入栈顶
return true; // 入栈成功
}
}
// 出栈并返回该元素
bool Pop(SqStack &S, int &x){
if(S.top == -1)
return false; // 栈为空,出栈失败
else{
x = S.data[S.top]; // 将要出栈的元素取出
S.top--; // 栈顶指针减1
return true; // 出栈成功
}
}
// 打印所有栈元素
void PrintStack(SqStack S){
while(S.top != -1){
cout << S.data[S.top] << " "; // 打印栈顶元素
S.top--; // 栈顶指针减1
}
cout << endl;
}
int main(){
SqStack S;
int x;
InitStack(S);
for(int i = 1; i <= 5; i++){
Push(S, i);
}
cout << "栈中所有元素:";
PrintStack(S);
if(GetTop(S, x))
cout << "栈顶元素为:" << x << endl;
if(Pop(S, x))
cout << "出栈元素为:" << x << endl;
cout << "栈中所有元素:";
PrintStack(S);
return 0;
}
```
这是一个基本的顺序栈实现,包括初始化、判断栈空栈满、取栈顶元素、入栈、出栈、打印栈元素等操作。您可以根据需要进行调整和扩展。
阅读全文