双栈共享空间
1.概述
本文使用代碼實現了順序結構——雙棧共享空間
2.代碼實現
順序雙棧
#include<bits/stdc++.h> using namespace std;#define MaxSize 20 typedef struct{int data[MaxSize];int top1; //棧1 int top2; //棧2 }BothStack; //0.初始化雙棧 void InitStack(BothStack &S){S.top1=-1;S.top2=MaxSize; } //1.判斷棧空 bool Empty(BothStack &S){ if(S.top1+1==S.top2){return false;} return true; } //2.入棧 bool Push(BothStack &S,int i,int x){ //i表示入棧1或棧2 if(i!=1&&i!=2){return false; // 棧值是否正確 }else if(S.top1+1==S.top2){return false; //棧是否滿 }else{if(i==1){S.data[++S.top1]=x; // 棧1 }else{S.data[--S.top2]=x; // 棧2 }return true;} } //3.出棧 bool Pop(BothStack &S,int i,int &x){if(i!=1&&i!=2){return false; // 棧值是否正確 }else if(S.top1==-1||S.top2==MaxSize){return false; //棧是否空 }else{if(i==1){x=S.data[S.top1--]; // 棧1 }else{x=S.data[S.top2++]; // 棧2 }return true;} } //4.取棧頂元素與 出棧 代碼實現類似 //主程序 int main(){BothStack S;InitStack(S); // 初始化 /*1.棧1:進棧3,5棧2:進棧2,4 */if(Push(S,1,3)&&Push(S,1,5)){cout<<"進棧 1 成功"<<endl; } else{cout<<"進棧 1 失敗"<<endl;}cout<<endl;if(Push(S,2,2)&&Push(S,2,4)){cout<<"進棧 2 成功"<<endl; } else{cout<<"進棧 2 失敗"<<endl;}//2.出棧int x;if(Pop(S,1,x)){cout<<"出棧 1 元素:"<<x<<endl;}else{cout<<"出棧 1 失敗"<<endl;}cout<<endl;if(Pop(S,2,x)){cout<<"出棧 2 元素:"<<x<<endl;}else{cout<<"出棧 2 失敗"<<endl;}return 0; }總結
- 上一篇: 鱼眼相机模型和标定
- 下一篇: 过滤钩子驱动程序一(微软DDK文档,FL