mainO) { int m; printf("Input the number of disks scanf("%d",&m); printf("The steps to moving %3d 2 B 8 hanoi(m,'A','B','C; 3 (0)} void hanoi(int n,char x,char y,char z) 1 B A 6 (1 2 B A 8 (2) ifn=1)》 (3) move(1,x,z); 3A B 0 (4) else (5 hanoi(n-1.x.z.y); (6) move(n,x,z); B (⑦ hanoi(n-1,y,x,z); (8) 2 B 8 (9)} 3
main() { int m; printf("Input the number of disks scanf("%d",&m); printf("The steps to moving %3d hanoi(m,'A','B','C'); (0) } void hanoi(int n,char x,char y,char z) (1) { (2) if(n==1) (3) move(1,x,z); (4) else{ (5) hanoi(n-1,x,z,y); (6) move(n,x,z); (7) hanoi(n-1,y,x,z); (8) } (9) } A B C 3 A B C 0 2 B A C 8 3 A B C 0 2 B A C 8 1 B C A 6 A B C 3 A B C 0 2 B A C 8 3 A B C 0
main() 2 B A C 8 { int m; 3A B 0 printf("Input the number of disks A B scanf("%d",&m); A B C 8 printf("The steps to moving %3d 2 B A 8 hanoi(m,'A',B',C; 3 A B 0 (0)} void hanoi(int n,char x,char y,char z) (2) if(n=1) B 3 move(1,x,Z); 2 B A 8 (4) elsef 3 A B (5) hanoi(n-1,x,z,y); (6) move(n,x,Z); B 0 (7) hanoi(n-1,y,x,Z); (8) (9) 栈空 Hanoi.c D:fengyi\bke\power power.c
main() { int m; printf("Input the number of disks scanf("%d",&m); printf("The steps to moving %3d hanoi(m,'A','B','C'); (0) } void hanoi(int n,char x,char y,char z) (1) { (2) if(n==1) (3) move(1,x,z); (4) else{ (5) hanoi(n-1,x,z,y); (6) move(n,x,z); (7) hanoi(n-1,y,x,z); (8) } (9) } A B C 3 A B C 0 2 B A C 8 1 A B C 8 A B C 3 A B C 0 2 B A C 8 3 A B C 0 栈空 3 A B C 0 2 B A C 8 Hanoi.c D:\fengyi\bkc\power\power.c
回文游戏:顺读与逆读字符串一样(不含空格) d top 1.读入字符串 2.去掉空格(原串) a d 3.压入栈 4.原串字符与出栈字符依次比较 字符串:“madam im adami” 若不等,非回文 若直到栈空都相等,回文 多进制输出: 例把十进制数159转换成八进制数 top 8159 余7 top 819 余3 top 82 余2 op 0 237 (159)10=(237)8
❖回文游戏:顺读与逆读字符串一样(不含空格) d a d top 1.读入字符串 2.去掉空格(原串) 3.压入栈 4.原串字符与出栈字符依次比较 若不等,非回文 若直到栈空都相等,回文 ❖多进制输出: 字符串:“madam im adam” 例 把十进制数159转换成八进制数 (159)10=(237)8 8 159 8 19 8 2 0 2 3 7 余 7 余 3 余 2 top top 7 top 7 3 top 7 3 2
表达式求值 中缀表达式 后缀表达式(RPN) a*b+c ab*c+ a+b*c abc*+ a+(b*c+d)/e abc*d+e/+ 中缀表达式:操作数栈和运算符栈 例计算2+4-3*6 6 4 3 2 6 6 操作数运算符 操作数 运算符 操作数运算符 18 6 12 操作数运算符 操作数 运算符
❖表达式求值 中缀表达式 后缀表达式(RPN) a*b+c ab*c+ a+b*c abc*+ a+(b*c+d)/e abc*d+e/+ 中缀表达式:操作数栈和运算符栈 例 计算 2+4-3*6 操作数 运算符 2 4 + 操作数 运算符 6 - 操作数 运算符 6 - 3 6 * 操作数 运算符 6 - 18 操作数 运算符 12
后缀表达式求值步骤: 1、读入表达式一个字符 2、若是操作数,压入栈,转4 3、若是运算符,从栈中弹出2个数,将运算结果再压入栈 4、若表达式输入完毕, 栈顶即表达式值; 若表达式未输入完,转1 例计算4+3*5 后缀表达式:435*+ ←top top top top 5 3 15 top 3 top 4 4 4 19
后缀表达式求值步骤: 1、读入表达式一个字符 2、若是操作数,压入栈,转4 3、若是运算符,从栈中弹出2个数,将运算结果再压入栈 4、若表达式输入完毕,栈顶即表达式值; 若表达式未输入完,转1 top 4 top 4 3 top 7 3 5 top 例 计算 4+3*5 后缀表达式:435*+ top 4 15 top 19