- 13
- 0
- 约1.15万字
- 约 53页
- 2020-11-01 发布于广东
- 举报
数据结构 栈和队列 两种操作受限的线性表 两种应用广泛的抽象数据类型(ADT) 栈的定义和术语 栈:限制在一端进行插入、删除操作的线性表 栈又称为“后进先出”(Last In First Out ------LIFO)线性表 限定插入或删除操作只能在表尾(栈顶)进行,分别称为进栈和出栈。指示栈顶位置的指针称为栈顶指针。 栈底:不可对栈进行输入、输出的一端 栈的长度:栈中元素的个数 空栈:元素个数为0的栈 栈可采用顺序存储结构或链表结构来实现,分别称为顺序栈和链栈 栈的ADT定义 栈的表示和实现 栈的顺序存储表示---顺序栈 在连续的存储单元内依次存放栈中的数据元素,并设指针top来指示栈顶元素的位置 top为0时表示空栈 栈的表示和实现 base 指向栈底的位置,base=NULL,栈结构不存在 top 初值指向栈底,top=base ,为栈空 插入栈顶元素,top=top+1 删除栈顶元素,top=top-1 顺序栈的实现 顺序栈的实现 顺序栈的实现 栈的表示和实现 栈的链式表示---链栈 链式栈无栈满问题,空间可扩充,通过指针连接所有栈中的元素 链式栈的栈顶在链头,表头结点即栈顶元素 插入与删除仅在栈顶处执行 适合于多栈操作 链栈的实现 链栈的实现 栈的应用 数制转换 括号匹配检验 行编辑程序 迷宫求解 表达式求值 数制转换 数制转换原理 N = (N div d) * d + N mod d 如(1348)10 = (250 4)8 实现 表达式求值 算术表达式组成要素 运算符、运算数、运算符优先级 基本思想 设置运算数栈和运算符栈,以及表达式界线符(如#) 首先置运算数栈为空栈,表达式起始符#进栈 依次读入表达式中的每个字符,若是运算数则入运算数栈,若是运算符则与运算符栈栈顶运算符进行优先级比较后作相应操作,直至表达式求值完毕 表达式求值 实现 栈与递归的实现 递归函数 一个直接调用自己或通过一系列的调用语句间接地调用自己的函数 如:求阶乘的递归实现 Fact(n) = 递归方法求解的条件 一个问题可以化解为若干个性质相同、解法相同的“小问题” 明确的递归出口 (换种说法:数学上定义为递归的函数) 数据的结构是递归的 单链表、树形结构、 解题的方式用递归解法简单 汉诺塔问题、八皇后问题 栈与递归的实现 如:Fibonacci数列的递归实现 Fib(n) = 栈与递归的实现 如:Hanoi塔的递归实现 规则:每次只能移动一个圆盘,圆盘可插在X,Y,Z中的任一塔座上,任何时刻都不能将一个较大的圆盘压在较小的圆盘之上 栈与递归的实现 关于函数调用 调用函数和被调函数之间的连接和信息交换需通过栈来进行 被调函数运行之前,系统的处理事项 将所有的实参、返回地址等信息传递给被调函数保存 为被调函数的局部变量分配存储区 将控制转移到被调函数的入口 从被调函数返回调用函数之前,系统的处理事项 保存被调函数的计算结果 释放被调函数的数据区 依照被调函数保存的返回地址将控制转移到调用函数 栈与递归的实现 关于嵌套调用 依照“后调用先返回”的原则 函数间的信息传递和控制转移必须通过“栈”来实现,即系统将整个程序运行时所需的数据空间安排在一个栈中,每当调用一个函数时,就为它在栈顶分配一个存储区(存放实参、局部变量及返回上一层的地址等,即工作记录),每当从一个函数返回时,就释放它的存储区。因此,当前正运行的函数的数据区(工作记录)必在栈顶 栈与递归的实现 栈与递归的实现 关于递归调用 递归调用时特殊的嵌套调用,具有“层次”概念 通常,所需数据区为内存中开辟的一各存储区域(或叫递归工作栈)。每一层递归所需信息构成一个工作记录,每进入一层递归就将产生一个新的工作记录压栈,每退出一层递归就从栈顶弹出一个工作记录。栈顶的工作记录就是当前执行层的活动记录 栈与递归的实现 递归算法的执行过程及栈的状态变化 如求Fact(3) 栈与递归的实现 递归算法的执行过程及栈的状态变化 如求Fib(3) 栈与递归的实现 递归算法的执行过程及栈的状态变化 如Hanoi(3,a,b,c) 队列的概念 队列又称为“先进先出”(FIFO)线性表 限定插入操作只能在队尾进行,而删除操作只能在队首进行 队列也可以采用顺序存储结构或链表结构来实现,分别称为顺序队列和链队列 队列的ADT定义 队列的表示和实现 队列的顺序表示---顺序队列 用一组连续的存储单元依次存放从队首到队尾的元素,附设两个指针front和rear分别指向队首元素和队尾元素的位置 顺序队列的实现 循环队列及其实现 模运算 入队,rear指针变化: Q.rear= (Q.rear+1)%maxsize 出队,front指针变化: Q.front=( Q.front +1)%max
您可能关注的文档
- 探索月球奥秘平凉四中.ppt
- 盈利能力的分析.ppt
- 后置定语种种.ppt
- 中东中亚周测.docx
- 2011高二政治课件:10.1加强思想道德建设(新人教版必修3).ppt
- 函数的思想在数列中的应用.ppt
- 日本军事战略思想.ppt
- 25.1(2)_锐角三角比的意义.doc
- 一_酝酿中的变革.ppt
- 纪念辛亥革命主题班会.ppt
- (正式版)DB51∕T 1867-2014 《袋栽黑木耳生产技术规程》.docx
- (正式版)DB51∕T 2413-2023 《油橄榄密植丰产栽培技术规程》.docx
- (正式版)DB51∕T 2436-2017 《川菜东坡一品肉烹饪工艺技术规范》.docx
- (正式版)DB51∕T 2396-2017 《农村电子商务服务站(点)服务与管理规范》.docx
- (正式版)DB51∕T 2419-2017 《桢楠扦插育苗技术规程》.docx
- CN105145773B 一种无花果曲奇饼干及其制作方法 (江苏农林职业技术学院).docx
- CN105203825A 微测量电极的制作方法和热电势的测量方法及相关装置 (国家纳米科学中心).docx
- CN105137533B 一种啁啾光纤光栅及其制作方法 (南京航空航天大学).docx
- (正式版)DB51∕T 2453-2018 《巴山新居公共管理指南》.docx
- (正式版)DB51∕T 1892-2014 《川西北地区沙化土地治理技术规程》.docx
原创力文档

文档评论(0)