双栈数据结构

#include <iostream>
#include<bits/stdc++.h>
#define max 100
typedef struct{
int top[2],bot[2];
int *data;
int size;
}dblstack;
using namespace std;
void init(dblstack &d);
int isempty(dblstack &d);
int isfull(dblstack &d);
void push0(dblstack &d,int x);
void push1(dblstack &d,int x);
int pop0(dblstack &d);
int pop1(dblstack &d);
int main()
{
    dblstack d;
    init(d);
    push0(d,1);
    push0(d,2);
    push1(d,8);
    push1(d,9);


    cout << pop0(d) << endl;
    cout << pop0(d) << endl;
    cout << pop1(d) << endl;
    cout << pop1(d) << endl;
    cout <<isfull(d) << endl;
    cout <<isempty(d) << endl;

    return 0;
}

void init(dblstack &d){
d.data=new int[max];
d.size=max;
d.top[0]=d.bot[0]=-1;
d.top[1]=d.bot[1]=d.size;
}
int isempty(dblstack &d){
if(d.top[0]==-1&&d.top[1]==max){
    return 1;
}
else return 0;
}


int isfull(dblstack &d){
if(d.top[1]-d.top[0]==1)
    return 1;
else return 0;
}

void push0(dblstack &d,int x){
if(isfull(d)) exit(0);
d.top[0]++;
d.data[d.top[0]]=x;
}

void push1(dblstack &d,int x){
if(isfull(d)) exit(0);
d.top[1]--;
d.data[d.top[1]]=x;
}
int pop0(dblstack &d){

if(isempty(d)) exit(0);
return d.data[d.top[0]--];

}
int pop1(dblstack &d){

if(isempty(d)) exit(0);
return d.data[d.top[1]++];

}


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值