结构

 

 
  1. #define MAXSIZE 20 
  2. typedef int SElemType; 
  3. typedef struct { 
  4.     SElemType data[MAXSIZE]; 
  5.     int top1; 
  6.     int top2; 
  7. }SqDoubleStack; 

入栈

 

 
  1. bool push(SqDoubleStack *S,SElemType e,int stackNumber){ 
  2.     if((S->top1 + 1) == S->top2){ 
  3.         return false;//栈满 
  4.     } 
  5.     if(stackNumber == 1){ 
  6.         S->data[++(S->top1)] = e; 
  7.     } 
  8.     else if(stackNumber == 2){ 
  9.         S->data[--(S->top2)] = e; 
  10.     } 
  11.     return true

出栈

 

 
  1. bool pop(SqDoubleStack *S,SElemType *e,int stackNumber){ 
  2.     if(stackNumber == 1){ 
  3.         if(top1 == -1){
    //栈1为空  
  4.             return false
  5.         } 
  6.         *e = S->data[(S->top1)--]; 
  7.     } 
  8.     else if(stackNumber == 2){ 
  9.         if(S->top2 == MAXSIZE){
    //栈2为空  
  10.             return false
  11.         } 
  12.         *e = S->data[(S->top2)++]; 
  13.     } 
  14.     return true;