晴山_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;}