晴山_BlueMountain
    214  words
  1  minute 
  共享栈 
 共享栈是在一个数组中同时模拟两个栈
- 栈结构需要有两个位置
top,其中一个top从前向后(赋初值-1),另一个从后向前(赋初值MaxSize)从而模拟两个栈 附代码: 
Stack CreateStack( int MaxSize ){    Stack s = (Stack) malloc(sizeof(struct SNode));    s->Top1 = -1;    s->Top2 = MaxSize;    s->MaxSize = MaxSize;    s->Data = (ElementType*) malloc(sizeof(ElementType)*MaxSize);    return s;}push方法结构: · 先判断栈是否已满,即判断两个位置tag是否指向同一元素(需注意应将top1+1与top2判断【即判断再存入一个元素是否会重叠】),需注意存入元素的位置应为当前top指向位置的下一个位置 附代码:
bool Push( Stack S, ElementType X, int Tag ) {    if( S->Top1 + 1 == S->Top2 ) {        printf("Stack Full\\\\n");        return false;    }    if( Tag == 1 ) {        S->Data[++S->Top1] = X;    } else {        S->Data[--S->Top2] = X;    }    return true;}