数组实现栈和两栈共享空间
来源:互联网 发布:淘宝买的电脑质量如何 编辑:程序博客网 时间:2024/05/04 13:05
大体思路:
结构体里单独设变量top,其用法类似于指针。从而保证其作为栈的基本特性。
先是基本的栈的实现代码:
#include<iostream>#include<cstring>#define MAX 1000using namespace std;typedef struct {int data[MAX];int top;} SQstack;void PUSH(SQstack *s,int data){if(s->top==MAX-1){//判断是否栈满cout<<"ERROR"<<endl;return;} else {s->top++;//栈的数据存储s->data[s->top]=data;return;}}int POP(SQstack *s)//数据读取和删除{if(s->top==-1){cout<<"ERROR"<<endl;return -1;} else {return s->data[(s->top)--];//在返回之后将top的值减一,从而实现删除操作。}}int main(){SQstack stack;//初始化一个stackint a;stack.top=-1;//因为不太会排版的原因··这块应该分成两行cin>>a;PUSH(&stack,a);cout<<stack.data[stack.top]<<endl;cout<<POP(&stack)<<endl;return 0;}
两栈共享空间:
大体思路:
就是设置两个top,分别从-1和MAX处开始储存,实现利用率最大化。
代码:
#include<iostream>#include<cstring>#define MAX 1000using namespace std;typedef struct{int data[MAX];int top1;int top2;} SQdoublestack;void Push(SQdoublestack *s,int number,int data){if(s->top1+1==s->top2){//判断是否栈满cout<<"ERROR"<<endl;return;} else if (number==1){s->top1++;s->data[s->top1]=data;return;} else if (number==2){s->top2--;s->data[s->top2]=data;return;}}int Pop(SQdoublestack *s,int number,int data){if(s->top1+1==s->top2){cout<<"ERROR"<<endl;return -1;} else if (number==1) {return s->data[(s->top1)--];} else if (number==2) {return s->data[(s->top2)++];}}int main(){SQdoublestack stack;//初始化stack.top1=-1;stack.top2=MAX;return 0;}
0 0
- 数组实现栈和两栈共享空间
- 顺序栈的实现和两栈共享空间
- Java实现栈-两栈共享空间
- 两栈共享空间 C语言实现
- 两栈共享空间的实现
- 两栈共享空间(java实现)
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 游标
- 前后端分离架构设计
- 上架苹果app store遇到的两个坑
- spring初探
- Android查找本地数据库显示数据
- 数组实现栈和两栈共享空间
- 设计模式之8 - 组合Composite
- Python零基础入门之七变量与内置函数
- spring注入:设值注入
- Class.getResource和ClassLoader.getResource的区别分析
- linux下tomcat发布网站验证码获取不到
- System函数处理路径有空格问题函数
- spring注入:构造注入
- dubbox 2.8.4的配置和使用分析