一、栈的顺序表示
顺序栈的结构类型
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
一些操作:
1.构造一个空栈
Status InitStack(SqStack &S){
S.base = (SElemType*)malloc(MAXSIZE*sizeof(SElemType));
//S.base = new SElemType[MAXSIZE];
if (!S.base) exit (OVERFLOW);
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;
}
2.出栈操作
Status Pop(SqStack &S,SElemType &e){
if(base == top) //判断是否栈空
return ERROR;
e = *--top;
/*即 --top;
e =*top;
*/
return OK;
}
*优先级高于--
*(--S.top)
(*S.top)--
二、栈的链式表示
链式栈的结构类型
typedef struct StackNode {
SElemType data;
struct StackNode *next;
} StackNode, *LinkStack;
LinkStack S;
一些操作:
1.链栈初始化
Status InitStack(LinkStack &S){
S = NULL;
return OK;
}
2.判断链栈是否为空
Status StackEmpty(LinkStack S)
if(S == NULL) return TRUE;
else return FALSE;
}
3.入栈
Status Push(LinkStack &S,SElemType e) {
p = new StackNode;
p -> data = e;
p -> next = S;
S = p;
return OK;
}
4.出栈
Status Pop(LinkStack &S,SElemType &e) {
if(S == NULL) return ERROR;
e = S -> data; //返回值
p = S; //换指针
S = S -> next; //指向下一结点
delete p;
return OK;
}
5.取栈顶元素
SElemType GetTop(LinkStack S) {
if(S == !NULL)
return S->data;
}
.........................................................................................................