C/C++实现共享栈
2021/6/19 17:57:14
本文主要是介绍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; }
这篇关于C/C++实现共享栈的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-07Dify + TiDB Vector,快速构建你的AI Agent
- 2024-07-06有没有什么开源的py项目可以对图像进行分类-icode9专业技术文章分享
- 2024-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享