共享栈(双栈)
#include <stdio.h>
using namespace std;
typedef int ElemType;
#define maxSize 100
typedef struct {
ElemType data[ maxSize] ;
int leftTop;
int rightTop;
} SharedStack;
void initSharedStack ( SharedStack & S) {
S. leftTop = - 1 ;
S. rightTop = maxSize;
}
bool pushLeft ( SharedStack & S, ElemType e) {
if ( S. rightTop - S. leftTop == 1 ) {
return false;
}
S. data[ ++ S. leftTop] = e;
return true;
}
bool pushRight ( SharedStack & S, ElemType e) {
if ( S. rightTop - S. leftTop == 1 ) {
return false;
}
S. data[ -- S. rightTop] = e;
return true;
}
bool popLeft ( SharedStack & S, ElemType & e) {
if ( S. leftTop == - 1 ) {
return false;
}
e = S. data[ S. leftTop-- ] ;
return true;
}
bool popRight ( SharedStack & S, ElemType & e) {
if ( S. rightTop == maxSize) {
return false;
}
e = S. data[ S. rightTop++ ] ;
return true;
}
bool emptyLeftStack ( SharedStack S) {
if ( S. leftTop == - 1 ) {
return true;
}
return false;
}
bool emptyRightStack ( SharedStack S) {
if ( S. rightTop == maxSize) {
return true;
}
return false;
}
bool GetLeftElem ( SharedStack S, ElemType & e) {
if ( S. leftTop == - 1 ) {
return false;
}
e = S. data[ S. leftTop] ;
return true;
}
bool GetRightElem ( SharedStack S, ElemType & e) {
if ( S. rightTop == maxSize) {
return false;
}
e = S. data[ S. rightTop] ;
return true;
}
void destoryLeftSharedStack ( SharedStack & S) {
S. leftTop = - 1 ;
}
void destoryRightSharedStack ( SharedStack & S) {
S. rightTop = maxSize;
}
int main ( ) {
return 0 ;
}