两栈共享空间

#include <iostream>
using namespace std;
#define lim 10000
class Stack
{
private:
    int data[lim];
    int top1;
    int top2;
public:
    Stack()//构造函数初始化
    {
        top1=-1;
        top2=lim;
    }
    bool Push(int e, int stacknum)//stacknum为栈的编号,只能为1或2
    {
       if(top1+1==top2)//栈满
            return false;
        if(stacknum==1)
        {
            data[++top1]=e;
            return true;
        }
        else
        {
            data[--top2]=e;
            return true;
        }
    }
    bool Pop(int stacknum)
    {
        if(top1==-1||top2==lim)//栈为空
            return false;
        if(stacknum==1)
        {
            --top1;
            return true;
        }
        else
        {
            ++top2;
            return true;
        }
    }
    int Top(int stacknum)
    {
        if(top1==-1||top2==lim)//栈为空
            return 0;
        if(stacknum==1)
            return data[top1];
        else
            return data[top2];
    }
};


int main()
{
    Stack s;
    int e;
    cout<<"请输入入栈的值"<<endl;
    cin>>e;
    s.Push(e, 1);
    s.Push(e, 2);
    cout<<s.Top(1)<<endl;
    cout<<s.Top(2)<<endl;
    s.Pop(1);
    s.Pop(2);
    return 0;
}

你可能感兴趣的:(数据结构)