#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct {
int base[MAX];
int top[2];
}DuSqStack;
void InitStack(DuSqStack &s){
int i,x;
s.top[0] = 0; s.top[1] = MAX - 1;
scanf("%d",&x);
while(x){
s.base [s.top[0] ++] = x;
scanf("%d",&x);
}
scanf("%d",&x);
while(x){
s.base [s.top[1] --] = x;
scanf("%d",&x);
}
}
void Push(DuSqStack &s, int e, int i){
if(s.top[0] - s.top [1] == 1)
return ;
//ÈëÕ»
if(i == 1){
s.base [s.top[0] ++] = e;
}
else if(i == 2){
s.base [s.top[1] --] = e;
}
}
void Pop(DuSqStack &s, int &e, int i){
if(i == 1){
if(s.top[0] == 0)
return ;
e = s.base [-- s.top[0]];
}
else if(i == 2){
if(s.top[1] == MAX - 1)
return ;
e = s.base [++ s.top[1]];
}
}
void GetTop(DuSqStack &s, int &e, int i){
if(i == 1){
if(s.top[0] == 0)
return ;
e = s.base [s.top[0] - 1];
}
else if(i == 2){
if(s.top[1] == MAX - 1)
return ;
e = s.base [s.top[1] + 1];
}
}
void Output(DuSqStack s, int i){
int j;
if(i == 1){
j = 0;
while(j < s.top[0]){
printf("%d\t",s.base[j ++]);
}
putchar('\n');
}
else if(i == 2){
j = MAX - 1;
while(j > s.top[1]){
printf("%d\t",s.base[j --]);
}
putchar('\n');
}
}
int main()
{
DuSqStack s;
int num,i;
InitStack(s);
scanf("%d%d",&num,&i);
Push(s,num,i);
Output(s,i);
scanf("%d",&i);
Pop(s,num,i);
printf("%d\n",num);
scanf("%d",&i);
GetTop(s,num,i);
printf("%d\n",num);
return 0;
}
两栈共用同一存储空间
最新推荐文章于 2024-08-26 19:23:49 发布