C/C++实现共享栈
作者:互联网
何为共享栈
两个栈共享一个存储空间。两个栈的指针分别为top1和top2。
基本功能
1.初始化共享栈
2.判断共享栈是否为空
3.栈1和栈2:进栈、出栈
4.获得栈1和栈2的栈顶元素
代码
#include <iostream>
#include <stdlib.h>
#define MaxSize 10
using namespace std;
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
int top1;
int top2;
}ShStack;
void InitStack(ShStack &S);//初始化共享栈
bool StackEmpty(ShStack &S);//判栈空
bool Push1(ShStack &S,ElemType x);//栈1:进栈
bool Push2(ShStack &S,ElemType x);//栈2:进栈
bool Pop1(ShStack &S,ElemType &x);//栈1:出栈
bool Pop2(ShStack &S,ElemType &x);//栈2:出栈
bool GetTop1(ShStack S,ElemType &x);//栈1:获得栈顶元素
bool GetTop2(ShStack S,ElemType &x);//栈2:获得栈顶元素
//初始化共享栈
void InitStack(ShStack &S){
S.top1=-1;
S.top2=MaxSize;
}
//判栈空
bool StackEmpty(ShStack &S){
if(S.top1==-1&&S.top2==MaxSize){
return true;
}else{
return false;
}
}
//栈1:进栈
bool Push1(ShStack &S,ElemType x){
if(S.top1+1==S.top2)return false;//栈满
S.data[++S.top1]=x;
return true;
}
//栈2:进栈
bool Push2(ShStack &S,ElemType x){
if(S.top2-1==S.top1)return false;
S.data[--S.top2]=x;
return true;
}
//栈1:出栈
bool Pop1(ShStack &S,ElemType &x){
if(S.top1==-1)return false;
x=S.data[S.top1--];
return true;
}
//栈2:出栈
bool Pop2(ShStack &S,ElemType &x){
if(S.top2==MaxSize)return false;
x=S.data[S.top2++];
return true;
}
//栈1:获得栈顶元素
bool GetTop1(ShStack S,ElemType &x){
if(S.top1==-1)return false;
x=S.data[S.top1];
return true;
}
//栈2:获得栈顶元素
bool GetTop2(ShStack S,ElemType &x){
if(S.top2==MaxSize)return false;
x=S.data[S.top2];
return true;
}
int main(){
ElemType x;
ShStack S;
InitStack(S);
Push1(S,1);
Push1(S,2);
Push1(S,3);
Push2(S,50);
Push2(S,51);
Push2(S,52);
Push2(S,53);
Push2(S,54);
Push2(S,55);
Push2(S,56);
if(Push1(S,4)==true){
printf("元素添加成功!\n");
}else{
printf("元素添加失败!\n");
}
if(Push2(S,57)==true){
printf("元素添加成功!\n");
}else{
printf("元素添加失败!\n");
}
while(GetTop1(S,x)){
printf("%d ",x);
Pop1(S,x);
}
printf("\n");
while(GetTop2(S,x)){
printf("%d ",x);
Pop2(S,x);
}
printf("\n");
if(StackEmpty(S)){
printf("共享栈为空!\n");
}else{
printf("共享栈不为空!\n");
}
return 0;
}
标签:return,实现,ElemType,top2,C++,ShStack,bool,top1,共享 来源: https://blog.csdn.net/weixin_44915226/article/details/118056471