第3章栈与队列B.ppt

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

* 问:为什么要设计堆栈?它有什么独特用途? 简化了程序设计的问题; 递归运算的有力工具; 用于保护现场和恢复现场; 调用函数或子程序非它莫属 。 答: 第三章 栈和队列 * 括号匹配的检验 ———— P49 设计思路:用栈暂存左括号 例3:行编辑程序 ————P49 设计思路:用栈存放输入的字符 例4:表达式求值 —————P52 设计思路:用栈暂存运算符 例5:汉诺仪(Hanoi)塔-——P55 设计思路:用栈实现递归调用 例2: 3.2 栈的应用举例 数制转换(十转N) ——P48 设计思路:用栈暂存低位值 例1: * 3.2 栈的应用举例 例1 数制转换 对于输入的任意一个非负十进制数,显示输出与其等值的八进制数 数制转换方法 N = (Ndiv8)10? 8+N mod 8 N:十进制数,div:整除运算,mod:求余运算;? (1348)10 = 2?83+5?82+0?8+4 = (2504)8 N 1348 168 21 2 N div 8 168 21 2 0 N mod 8 4 0 5 2 计算时从低位到高位 顺序产生八进制数的各个数位 结果: 2 5 0 4 显示时按从高位到低位的 顺序输出 * 3.2 栈的应用举例 void conversion( ) { InitStack(s); //建空栈 scanf(“%d”,&x); //输入一个非负十进制整数 while(x!=0) { // x不等于零循环 push(s, x% 8); // x/8第一个余数进栈 x=x/8; //整除运算 } while(! StackEmpty(s) ) //输出存放在栈中的八制数位 { x=pop(s); printf(“%d”,x); } } 算法3.1 * 例2:括号匹配的检验 行编辑程序 功能:用户,终端程序或数据 数据区 直接存入? 设置:用户缓冲

最近下载