两个栈共享连续存储单元
两个栈共享连续存储空间:它主要利用了栈底位置不变,栈顶位置动态变化的特性。 所以在定义栈顶指针时,需要定义两个栈顶指针。 双栈类型定义如下: typedef struct { datatype data [ MAXSIZE ] ; int top [ 2 ] ; /* 栈顶指针 */ } DqStack ; 两个共享栈的压栈算法: int push ( STACK * s , ElemType x , int k ) { //将x元素压入到以s为栈空间的第k个栈中 if ( s -> top [ 0 ] + 1 == s -> top [ 1 ] ) { printf ( "\n stack is full!" ) ; return 0 ; } if ( k == 0 ) { s -> top [ 0 ] ++ ; s -> data [ s -> top [ 0 ] ] = x ; } else { s -> top [ 1 ] -- ; s -> data [ s -> top [ 1 ] ] = x ; } return 1 ; } 两个共享栈的出栈算法: int pop ( STACK * s , int k , ElemType * x ) //将以s为栈空间的第k个栈顶元素取出 { if ( ( k == 0 ) && ( s -> top [ 0 ] == - 1 )