共享栈的定义
#include<iostream>
using namespace std;
typedef int Elemtype;
#define MaxSize 100
//共享栈的定义
typedef struct stack{
Elemtype data[MaxSize];
int top[2];
}ShareStack;
//初始化
void InitShareStack(ShareStack& S){
S.top[0]=-1;//左边的栈顶指针 起始位置
S.top[1]= MaxSize;//右边的栈顶指针 起始位置
return ;
}
//入栈
bool Push(ShareStack&S,int i,Elemtype x){
/*
参数说明:
S:共享栈;
i: 进行操作的栈,i=0(左边的栈);i=1(右边的栈);
x:入栈元素的值;
*/
if(S.top[1]-S.top[0]==1){
printf("栈已满!");
return false;
}
switch(i){
case 0:
S.data[++S.top[0]] = x;break;
case 1:
S.data[--S.top[1]] = x;
}
return true;
}
//出栈
bool Pop(ShareStack&S,int i,Elemtype &x){
/*
参数说明:
S:共享栈;
i: 进行操作的栈,i=0(左边的栈);i=1(右边的栈);
x:接收出栈元素的值;
*/
if(S.top[0]==-1 && S.top[1]==MaxSize){
printf("栈为空");
return false;
}
switch(i){
case 0:x = S.data[S.top[0]--] ;break;
case 1:x = S.data[S.top[1]++] ;
}
return true;
}
void Print2(ShareStack S, int i=0){
int index;
switch(i){
case 0:
index=0;
printf("左边的栈Stak1:");
while(index<S.top[0])
printf("%d->",S.data[index++]);
printf("\n");
case 1:
printf("右边的栈Stak2:");
index=MaxSize-1;
while(index>S.top[1])
printf("%d->",S.data[index--]);
}
return;
}
int main()
{
ShareStack S;
InitShareStack(S);
for(int i=1;i<=9;i++){
Push(S,0,i*i);
}
for( int i=1;i<=9;i++)
Push(S,1,i);
Print(S,0);
Print(S,1);
Print2(S);
return 0;
}