- 39
- 0
- 约3.86千字
- 约 19页
- 2018-03-31 发布于河南
- 举报
2013福建专升本数据结构 第3章 栈
第三章 栈 栈是一种特殊的线性表,是操作受限的线性表,称其为限定性数据结构。 3.1 ADT栈(stack) 栈的定义和特点 定义:限定仅在表首进行插入或删除操作的线性表,表首—栈顶,表尾—栈底,不含元素的空表称空栈 特点:先进后出(FILO)或后进先出(LIFO) 3.1 ADT栈(Stack) ADT栈上定义的常用的基本运算 Empty( ): 判断栈空 Full( ):判断栈满 Top( ): 返回栈顶元素 Push(x):将元素x入栈 Pop(x):出栈,并将栈顶元素存入x中 3.1.1栈应用的简单例子 例1、程序编译时的表达式或字符串的括号匹配问题。 例如,算术表达式(x*(x+y)-z),其中位置1和4处有左括 号,而位置8和11处有右括号,满足配对要求。 但算术表达式 (x+y)*z)( ,其中位置8处的右括号没有 可与之配对的左括号,而位置9处的左括号没有可与之配对的右括号。 这里要在栈的基本运算的基础上定义算术表达式(字符串) expr中的圆括号配对检查运算 void Parenthesis(char *expr) 3.2 栈的存储结构 3.2.1 用数组实现栈——顺序栈 3.2.1.1实现:一维数组s[M] 3.2.2两个栈共用一个数组的实现 2个栈共享一个数组stack[0..n] 利用栈底位置不变的特性,可以将2个栈的栈底分别设在数组stack的两端。然后各自向数组stack的中间伸展,如图所示。 3.2.3 用指针实现栈—链栈 例:已知字符串的内容为b%-y-3*y↑2,利用栈的进栈和退栈操作将其转换成by-%3y2 ↑ *-试给出进栈和退栈的操作序列。 设进栈用I表示,出栈用O表示 操作序列: IOIIIOOOIIOIIOIIOOOO 作业: 1、书P61 3.2 (1)——用数组实现 3.2 (2)——用指针实现 2、利用栈将链表逆置 * * an a1 a2 ……... 栈底 栈顶 ... 出栈 进栈 栈S=(a1,a2,……,an) 栈的操作示例 例2、回文游戏:顺读与逆读字符串一样(不含空格) d a d top 1.读入字符串 2.去掉空格(原串) 3.压入栈 4.原串字符与出栈字符依次比较 若不等,非回文 若直到栈空都相等,回文 例3、多进制输出: 字符串:“madam im adam” 例 把十进制数159转换成八进制数 (159)10=(237)8 159 8 19 8 2 8 0 2 3 7 余 7 余 3 余 2 top top 7 top 7 3 top 7 3 2 top= -1 1 2 3 4 5 0 栈空 栈顶指针top,指向实际栈顶 后的空位置,初值为-1 top 1 2 3 4 5 0 进栈 A top 出栈 栈满 B C D E F 设数组维数为M top= -1,栈空,此时出栈,则下溢(underflow) top=M-1,栈满,此时入栈,则上溢(overflow) top top top top top 1 2 3 4 5 0 A B C D E F top top top top top top 栈空 3.2.1.2栈的数组实现的优缺点 优点:所列的7个基本运算都可在O(1)的时间里完成,效率高。 缺点:为了使每个栈在算法运行过程中不会溢出,通常要为每个栈预置一个较大的栈空间。另一方面,由于各个栈的实际大小在算法运行过程中不断变化。经常会发生其中一个栈满,而另一个栈空的情形,空间利用率低。 好处:提高空间利用率,减少栈发生上溢的可能性。 typedef struct snode *slink; typedef struct snode { StackItem element; slink next; }StackNode; 链栈结点及用指针实现的栈结点定义 入栈算法 出栈算法 ^ …... 栈底 top top x p top ^ …... 栈底 top p 3.2.3.1 入栈、出栈算法实现及演示: 3.2.3.2栈的应用 例1、过程的嵌套调用 r 主程序 s r r r s 子过程1 r s t 子过程2 r s t 子过程3 例 递归的执行情况分析(假设初始w=3) 例2、递归过程及其实现 定义:函数直接或间接的调用自身叫递归 实现:建立递归工作栈 void print(int w) { int i; if ( w!=0) { print(w-1); for (i=1; i=w;
您可能关注的文档
最近下载
- 华为的成功:为什么?-华为管理模式探讨.docx VIP
- TCMA-RQ002-2018 膜式燃气表阀盖与阀座.pdf VIP
- 2025年最新纪检监察考试题库及参考答案(通用版).docx VIP
- DB42_T 1763-2021 高速公路服务区(停车区)服务设施规范.docx
- 脊柱肿瘤健康宣教课件.pptx VIP
- 人教版小学四级上册数学口算练习试题全套.doc VIP
- 道路交通安全法1000题.doc
- (2026年春季新版本)人教版三年级数学下册全册教案.docx
- Siemens西门子工业SIMATIC IPC547G SIMATIC IPC547G使用手册.pdf
- 定制膏方加工质量管理规范(T_SHATCMI 0003-2023).docx VIP
原创力文档

文档评论(0)