一块内存,两头是两个栈
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 10
typedef struct stack{
int data[Maxsize];
int top0;
int top1;
}Stack;
void Initstack(Stack &s){
s.top0 = -1;
s.top1 = Maxsize;
}//栈满判断条件是top0 + 1 = top1
bool pushstack0(Stack &s,int data){
if(s.top0+1 == s.top1){
return false;
}
s.data[++s.top0] = data;
return true;
}
bool pushstack1(Stack &s,int data){
if(s.top0+1 == s.top1){
return false;
}
s.data[--s.top1] = data;
return true;
}
bool Pop0(Stack &s,int &x){
if(s.top0 == -1){
return false;
}
x = s.data[s.top0--];
return true;
}
bool Pop1(Stack &s,int &x){
if(s.top1 == Maxsize){
return false;
}
x = s.data[s.top1++];
return true;
}
int main(){
Stack s;
int x;
Initstack(s);
pushstack1(s,1);
pushstack1(s,1);
Pop1(s,x);
printf("%d\n",x);
Pop1(s,x);
printf("%d\n",x);
pushstack0(s,1);
pushstack0(s,1);
Pop0(s,x);
printf("%d\n",x);
Pop0(s,x);
printf("%d\n",x);
}