栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++两栈共享空间

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++两栈共享空间

 两栈共享空间就是定义一个数组,对数组的两端进行操作的栈。

共享栈的图示:

栈的插入操作步骤:

首先判断栈是否已经满了, 当top1 = top2 - 1时候,说明栈已经满了,不能再插入了

否则没有满,判断要往那个栈插入,往栈1插入,就--top1,因为从前往后插,  如果是栈2,就--top2,因为是从数组后往插入,所以插入的索引位置应该往前移动.

const int MAXSIZE = 100;
class stack{
    public:
        int data[MAXSIZE];
        int top1,top2;   //top表示头位置, rear表示数组的尾操作
        
    stack(){
    top1 = -1;             //利用构造函数,初始化栈,当top=-1  和rear=MAXSIZE时候为空栈
    top2 = MAXSIZE;
    }

    //当共享空间栈满的条件是,top1 = top2-1;  top从前往添加元素,top2从后往前添加元素
    void push(int i, int input_data){    
        if(top1 == top2 - 1){
            couut<<"栈满了"< 

 2.两栈共享空间出栈操作

出栈操作,想出哪个栈,就判断哪个栈是否为空即可,如想出栈1元素,就看栈1是否为空,与栈2是否为空,是否为满都没有关系.

栈1空的条件是top1=-1为空,否则不为空,当不为空的时候,返回数据并让指针前移动

return data[top1--]  是将数据先return后 再让top1前移动,表示减少一个元素

栈2为空的条件是 top1=MAXSIZE;否则不为空,  当不为空的时候,返回数据并让top2值后移。

int pop(int i){
    if(i==1){
        if(top1==-1){
            cout<<"栈1空了";
        }else{
            return data[top--];
        }
    }

    if(i==2){
        if(top2 == MAXSIZE){
            cout<<"栈2空了"< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号