来源:互联网 发布:多线程ping java 编辑:程序博客网 时间:2024/06/12 23:58
栈是一个种特殊的线性表,它只能在栈顶进行插入和删除操作,它实现的是一种后进先出(LIFO)的策略。

可以用数组来作为栈,插入操作称为push,删除操作称为pop,栈有个属性top[S],它指向最近插入的元素,称为栈顶,例如栈S包含元素S[1..top[S]],其中S[1]是栈底元素,S[top[S]]是栈顶元素。

当top[S]=0时,栈不包含任何元素,称为空栈,判断空栈过程如下:
STACK-EMPTY(S)    if top[S] = 0        then return TRUE        else return FALSE
c代码为:
int stack_empty(int S[]){if (top == 0) {return 1;}return 0;}

压栈过程如下:
PUSH(S, x)    top[S] <-- top[S]+1    S[top[S]] <-- x
c代码为:
void push(int S[], int x){S[top++] = x;}

出栈过程如下:
POP(S)    if STACK-EMPTY(S)        then error "underflow"    else top[S] <-- top[S]-1        return S[top[S]+1]
c代码为:
int pop(int S[]){if (stack_empty(S)) {printf("underflow.\n");} else {return S[--top];}}
原创粉丝点击