3-3 顺序栈的操作(4)

顺序栈的出栈

算法步骤:

  1. 判断栈是否为空,若空则报错
  2. 获取栈顶元素e
  3. 栈顶指针-1

代码:

Status Pop(SqStack &S, SElemType &e) {
    if(S.base=S.top)
        return ERROR;
    e = *--S.top;
    return OK;
}

3-3 链栈的表示和操作(1)

链栈是运算受限的单链表,只能在链表头部进行操作

定义链栈结点:

typedef struct StackNode {
    SElemType data;
    struct StackNode *next;
} StackNode, *LinkStack

链栈的特点:

  1. 链表的头指针是栈顶
  2. 不需要头结点
  3. 基本不存在栈满的情况
  4. 空栈时头指针指向空
  5. 插入删除仅在栈顶执行