
1 #include<stdio.h> 2 typedef struct{ 3 int array[50]; 4 int top,rear; 5 }DoubleStack; 6 void Create(DoubleStack*S) 7 { 8 int n,i; 9 scanf("%d",&n); 10 for(i=0;i<n;i++) 11 scanf("%d",&S->array[i]); 12 S->top=0; 13 S->rear=n-1; 14 } 15 void Push(DoubleStack*S,int i,int e) 16 { 17 if(i==0) 18 { 19 if(S->top==0)return; 20 else { 21 S->top--; 22 S->array[S->top]=e; 23 }; 24 } 25 else if(i==1) 26 { 27 if(S->rear==49)return; 28 else { 29 S->rear++; 30 S->array[S->rear]=e; 31 } 32 33 34 } 35 } 36 void Pop(DoubleStack*S,int i) 37 { 38 if(S->rear<S->top)return; 39 if(i==0)S->top++; 40 else if(i==1)S->rear--; 41 } 42 void Order(DoubleStack*S) 43 { 44 for(int i=S->top;i<=S->rear;i++) 45 printf("%d ",S->array[i]); 46 } 47 int main() 48 { 49 DoubleStack S; 50 int i1,i2,e; 51 Create(&S); 52 scanf("%d %d",&i1,&e); 53 Push(&S,i1,e); 54 Order(&S); 55 scanf("%d",&i2); 56 Pop(&S,i2); 57 Order(&S); 58 return 0; 59 }