栈
来源:互联网 发布:多线程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时,栈不包含任何元素,称为空栈,判断空栈过程如下:
压栈过程如下:
出栈过程如下:
可以用数组来作为栈,插入操作称为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 FALSEc代码为:
int stack_empty(int S[]){if (top == 0) {return 1;}return 0;}
压栈过程如下:
PUSH(S, x) top[S] <-- top[S]+1 S[top[S]] <-- xc代码为:
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];}}
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- SMS
- hibernate学习笔记04---集合
- 类的各种成员函数在类中是如何分配的?
- IOS学习笔记16——Core Data
- HDU 4614 Vases and Flowers 线段树区间更新
- 栈
- 前台利用jcrop做头像选择预览,后台通过django利用Uploadify组件上传图最终使用PIL做图像裁切
- linux 下gitolite服务器搭建
- POJ 2564 Edit Step Ladders
- C语言的指针要怎么理解
- 无法访问Github,该如何更新OpenStack代码? ( by quqi99 )
- ASP.Net 后台执行导出Excel list集合 有跨行合并
- NFS服务器的配置
- java 中break和continue的区别