电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

算法与数据结构幻灯片-dsc3

26页
  • 卖家[上传人]:F****n
  • 文档编号:88172833
  • 上传时间:2019-04-20
  • 文档格式:PPT
  • 文档大小:344KB
  • / 26 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、3.1 栈,第三章. 栈和队列 (Chapter 3. Stack and Queue),栈(stack)是插入和删除操作受限的线性表,是一种后进先出(Last In First Out - LIFO)的线性表。表头端称为栈底(bottom),表尾端称为栈顶(top),插入和删除都在栈顶进行。,bottom,top,栈的基本操作:,Inistack,Clear,Gettop,Empty,Push,Pop,栈的实现:,#define STACK_INIT_SIZE user_supply #define STACKINCREMENT user_supply typedef struct elemtype * bottom ; elemtype * top ; int stackzise ; sqstack ;,顺序存储结构表示栈,Full,typedef strcut lnode elemtype data ; struct lnode * next ; * linkedstack;,链式存储结构表示栈-链栈(Linked_stack),上溢(overflow):若栈的容量已全部用完,再

      2、进行插入操作(PUSH),就会发生上溢错误。,下溢(underflow):若栈已空,再进行删除操作(POP),就会发生下溢错误。,3.2 栈的应用-表达式求值,任一表达式(expression)都是由操作数(operand)、操作符(operator)和界限符(delimiter)组成。,我们通常习惯使用中缀表达式(infix expression),但中缀表达式离不开括号(bracket)。若使用前缀表达式(prefix expression)或后缀表达式( postfix expression)则不需要括号。利用栈,可以将中缀表达式变为前缀表达式或后缀表达式,再用栈进行运算即可得到表达式的值(value)。,3.3 栈与递归,递归(recursive):一个程序直接调用自己或通过其它程序调用自己就称为递归。根据调用关系可分为直接递归(direct recursive)和间接递归(indirect recursive )。,第 一 次 上 机 作 业 输入表达式字符串,以“=”表示结束, 计算并输出表达式值。 操作数可以是整数或实数,操作符有 “+”、“-”、“*”、“/”、“”(乘

      3、方)和 “sin( )”(正弦)、“cos( )”(余弦)、“log( )”(对数)、“ln( )”(自然对数)等函数。,栈在程序的过程或函数调用中的作用:,过程一,过程二,过程三,过程四,断点一,断点二,断点三,stack,递归是程序设计中一种强有力的工具。下面三种情况可用递归解决:,1、有些数学函数是递归定义的,对其求解可用递归;,2、有些数据结构具有递归特性,对其操作可用递归;,3、有些问题的解决方法用递归描述,对其求解也可用递归。,int Fact ( int n ) if ( ! n ) return 1 ; / 出口条件 return n * Fact ( n 1 ) ; / 递归调用部分 ,int Min ( sqlist S, int n ) if ( n=1 ) return S 1 ; / 出口条件 x = Min ( S, n-1 ); if ( x S n ) return x; else return S n ; / 递归调用部分 ,如何解决这个问题呢?真伤脑筋啊!,解决该问题可分三步走:,1、将 A 柱上面的 n-1 个盘子从 A 柱移到 C 柱;,2、将第

      4、 n 个盘子从 A 柱移到 B 柱;,3、再将 C 柱上面的 n-1 个盘子移到 B 柱。,void Hanoi ( int n , int x, int y, int z) If ( n ) / 出口条件 Hanoi ( n 1 , x, z, y ) ; / 递归调用部分 Move ( n, x, y ) ; Hanoi ( n - 1, z, y, x); ,求费波拉契数列(Fibonacci)、迷宫问题(Maze)、八皇后(Eight Queens)、骑士遍历(Cavalier travel)等等。,以下这些问题也可用递归程序解决:,程序设计常用方法之一:分治法(Divide and Conquer),亦即“分而治之”的方法:把原问题分成若干个子问题,对每一个子问题分别求解,然后把这些解连结成原问题的解。如果子问题仍然比较复杂,还可递归使用分治法,直到每个子问题都得出解为止。,2、下面求 S 中 n 个元素最大值的方法也是使用的分治法:,int Max ( int S MAXLEN , int n) if ( n = 1 ) return S 0 ; m = Max ( S ,

      5、 n 1 ) ; if ( m S n ) return m ; return S n ; ,程序设计常用方法之二: 回溯法(Backtracking),回溯法是一种满足一定条件的穷举搜索法:在求解过程中,不断利用可供选择的规则扩展部分解,一旦当前的部分解不成立,就停止扩展,退回到上一个较小的部分解继续试探,直到找到问题所有的解或无解为止。,void MapColor ( int R n n , int s n ) s 0 =1; / 00 区染 1 色 i = 1 ; j = 1 ; / i 为区域号,j 为染色号 while ( i n ) while ( j 4 ) / 该区染色成功,结果进栈,继续染色下一区, if ( j 4 ) j = s - - i + 1; ; / (回溯)变更栈顶区域的染色色数,用新颜色重试 ,s:,2、过河问题:某人带了一条狗、一只鸡和一筐菜过河,因船小,每次只能带一样东西过河。若单独留下狗和鸡,则狗会吃鸡;若单独留下鸡和菜,则鸡会吃菜。试问他如何过河?,结果如下: 1、人+鸡过河; 2、人空手返回; 3、人+狗过河; 4、人+鸡返回; 5、人+菜过

      6、河; 6、人空手返回; 7、人+鸡过河。,前面说到的迷宫问题、八皇后问题、骑士遍历问题均可应用回溯法求解。,作 业 2. 试推导求解 n 阶梵塔问题至少要执 行的移动操作 move 次数。 3. 一个简化的背包问题:一个背包能装总重量为 T,现有 n 个物件,其重量分别为(W1、W2、Wn)。问能否从这 n 个物件中挑选若干个物件放入背包中,使其总重量正好为 T ?若有解则给出全部解,否则输出无解。,作 业 4. 已知以字符型顺序表表示的表达式含有三种扩号“(”、“)”、“”、“”、“”和“”,它们可嵌套使用,试写出算法判断给定表达式中所含扩号是否正确配对出现。,第 二 次 上 机 作 业 八皇后问题或骑士遍历问题任选一个。,递归过程的模拟,对有些具有尾递归的过程,由于尾递归后不需保留参数和局部变量,可直接用循环代替递归。例如:,3.3 队列,队列(queue)也是插入和删除操作受限的线性表,但是一种先进先出( First In First Out - FIFO)的线性表。表头端称为队头(front),表尾端称为队尾(rear),插入在队尾进行,而删除则在队头进行。,front,rea

      7、r,队列的基本操作:,Iniqueue,Clear,Gethead,Empty,Enqueue,Dequeue,Full,Size,队列的实现:,链式存储结构表示队列,typedef struct node elemtype data ; struct node * next ; * pointer; typedef struct pointer front, rear ; linkedqueue ;,顺序存储结构表示队列,#define MAXLEN user_supply typedef struct elemtype elem MAXLEN ; int front , rear; queue;,ENQUEUE1,ENQUEUE2,ENQUEUE3,DEQUEUE1,ENQUEUE4,DEQUEUE2,ENQUEUE5,ENQUEUE6,ENQUEUE7,ENQUEUE8,ENQUEUE1,ENQUEUE2,ENQUEUE3,DEQUEUE1,ENQUEUE4,DEQUEUE2,ENQUEUE5,ENQUEUE6,ENQUEUE7,ENQUEUE8,q1,q2,q3,q4,q5,q6,q7,q8,循环队列 (circular queue),i = (i+1) % n 入队列 rear+1,出队列 front+1, 元素个数 =(rear front + n ) % n,F,R,F,R,F,R,R,R,R,R,R,R,判断循环队列满和空的三种方法:,2、留下一个单元不使用,则 rear 永远也追不上 front;,作 业 5. 若栈的输入序列为 1234,给出所有可能的输出序列。 6. 已知有两个栈 S1 和 S2 及其基本操作 Push(S , x)、Pop(S)、Full(S) 和 Empty(S),给出用此二栈实现队列操作Enqueue、Dequeue、Fullq 和Emptyq的算法,

      《算法与数据结构幻灯片-dsc3》由会员F****n分享,可在线阅读,更多相关《算法与数据结构幻灯片-dsc3》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.