- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构_栈和队
第二章 常用数据结构及其运算 * * 2.3 栈 与 队 2.3.1 栈的结构和运算 栈的定义 ? 是只能在表的一端进行插入和删除操作的 线性表。允许插入和删除的一端称为栈顶 (top),另一端称为栈底(bottom)。 ? 设栈s=(a1,a2,...,an),a1称为栈底元素, an称为栈顶元素。 ? 栈中元素按a1,a2,...,an次序进栈,又按 an,...,a2,a1次序退栈。因此栈的操作特点 是:后进先出(LIFO);n=0时称为空栈。 ? 栈的存储结构:顺序和链式 ? 栈的种类:顺序栈、链栈、对顶栈 a1 a2 a3 …… an 栈底 栈顶 进栈 出栈 例1:一个栈的入栈序列是abcde,则栈的不可能的输出 序列是( C ) A. edcba B. decba C. dceab D. abcde 例2:栈的输入序列为abcdef,则不可能的输出序列有: aedfbc,…… 顺序栈 ? 用向量作为存储结构,可用一维数组s[1:m] 表示。 m-栈的最大容量。 Top-栈顶指示器。top=0,栈空;top=m,栈满。 2.3 栈 与 队 2.3.1 栈的结构和运算 a1 a2 …… top 1 2 a1 a2 …… 1 2 3 top 进栈:top+1 a1 a2 …… 1 2 退栈:top-1 top a1 a2 a3 …… am 栈满 top …… 0 top 栈空 ? 插入(进栈):先令top加“1”,再将元素送入s[top]中。当top=m时若再有元素进栈,则产生“上溢”。算法如下: Push(s,m,top,x) {if(top=m){ “上溢”; return; }top++; s[top]-x; return; } 2.3 栈 与 队 删除(退栈):只要将top减 “1”即可。算法如下: Pop(s,top,y){ if(top=0){ “下溢”; return; } y-s[top]; top--; return;} 链栈 ? 链栈是用链表作为栈的存储结构,top为栈顶指 针,指示栈顶元素位置,若top=nil,则表示栈 空。链栈一般不会出现上溢,除非内存中已不 存在可用空间。 2.3 栈 与 队 2.3.1 栈的结构和运算 top ^ 栈底 top 空栈 ? 链栈的插入(进栈): ? 链栈的删除(退栈): top ┄ x ^ p data(p)-x; next(p)-top; Top-p; top ┄ ^ P-top; top-next(top); RET(p); 4. 对顶栈 2.3 栈 与 队 2.3.1 栈的结构和运算 栈底1 a1 a2 a3 a4 a5 栈底2 a1 a2 top1 top2 特点:共享栈空间 若A(1: m), 则每栈最大空间 m/2 5. 栈的应用 (1) 表达式求值(用于高级语言的编译程序) ?运算符:** / * + - ; 优先数:3 2 2 1 1 0 2.3 栈 与 队 2.3.1 栈的结构和运算 ?小括号优先数: θ1 θ2 ( 其它符号,=“)” ( 其它符号 ) 其它符号 ) 其它符号 需建立两个栈:操作数(NS)、运算符(OS)。 ? 算法思想:置NS为空, “; ”作为OS的栈底元素。自左至右扫描表达式: ① 若为操作数,将其压入NS栈 ② 若为运算符,与OS栈顶元素比较优先级: OS栈顶,则将当前运算符压入OS栈。 = OS栈顶,则从NS栈中弹出两个操作数x、y,再从OS栈中弹出一个运算符θ,构成一条机器指令:xθy→T,将结果T送入NS栈。 = “;”,且OS栈顶也为“;”,则表示表达式处理结束,此时NS栈顶的元素即为此表达式的值。 (1) 表达式求值 ? 举例:设表达式为:A / B ** C + D; 过程为: C B A ** / ; D T2 + ; B**C--T1 T1 A / ; T2+ D--T3 T3 ; ; A/T1 --T2 T2 得到表达式的值T3 2.3 栈 与 队 2.3.1 栈的结构和运算 ? 过程嵌套--多重嵌套时,用栈将各层断点信息依次入栈,当各层子过程返回时,以相反的次序从栈顶取出(FILO, or, LIFO) 2.3 栈 与 队 2.3.1 栈的结构和运算 r 主过程 r s t r s r s t r s r 子程A 子程B 子程C ? 递归调用--一个过程通过过程调用语句
有哪些信誉好的足球投注网站
文档评论(0)