- 10
- 0
- 约2.16万字
- 约 116页
- 2021-11-13 发布于安徽
- 举报
例3.4 编写一个算法利用顺序栈判断一个字符串是否是对称串。如: str=“abcddcba” 解:对于字符串str,先将其所有元素进栈。然后从头开始扫描str,并出栈元素,两者进行比较。 bool symmetry( char str[ ] ) { int i; char e; SqStack *st; InitStack(st); for (i=0; str[i]!=‘\0’; i++ ) Push( st, str[i] ); for (i=0; str[i]!=‘\0’; i++ ) { Pop(st, e); if (str[i]!=e) { DestroyStack(st); return false; } } DestroyStack(st); return true; } int Match( char exp[ ], int n ) { int i=0; char e; bool match=true; LiStack *st; InitStack(st); // 初始化栈st while ( in match==true) // 循环扫描exp的每个字符 { if ( exp[i]==‘(’ ) // 若当前字符是左括号 Push(st, exp[i] ); // 左括号入栈 else if ( exp[i]==‘)’ ) // 否则,若当前字符是右括号 { if ( Pop( st, e )==true) // 若退栈成功 { if (e!=‘(‘ ) // 若退栈符号不是左括号 match=false; // 左右括号不匹配 } else match=false; // 当栈是空的,右括号无匹配的左括号 } i++; // 继续下个字符 } if (Stackempty(st)==false) // 若栈非空, match=false; // 则左括号无右括号匹配 DestroyStack(st); return match; } 求解迷宫(1,1)到(M,N)路径的过程是:先将入口进栈(初始方位设置为-1),在栈不空时循环:取栈顶方块(不退栈),若该方块是出口,则输出栈中方块即为路径。否则,找下一个可走的相邻方块,若不存在这样的方块,则退栈。若存在这样的方块,则将其方位保存到栈顶元素中,并将这个可走的相邻方块进栈(初始方位设置为-1)。 -1 2 3 2 2 2 2 2 1 1 1 1 i j di i j di i j di i j di St[0] [1] [2] [3] [4] …………. 为了保证试探的可走相邻方块不是已走路径上的方块,如(i,j)已进栈,在试探(i+1,j)的下一可走方块时,又试探到(i,j),这样可能会引起死循环,为此,在一个方块进栈后,将对应的mg数组元素值改为-1(变为不可走的相邻方块),当退栈时(表示没有可走相邻方块),将其恢复为0。 int mg[M+2][N+2]={ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1,-1,-1, 1,-1,-1,-1, 1, 0, 1}, {1, 0,-1, 1,-1, 0,-1, 1, 0, 1}, {1, 0,-1,-1,-1, 1, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 0, 0, 0
您可能关注的文档
最近下载
- VDGP201_2002-05-01_VolumendefizitevonGutkenausNichteisenmetallen(中文).doc VIP
- 部编版道德与法治一年级下册第2课《做事要仔细》精美课件.pptx VIP
- 《新污染物治理技术》-课件全套 第1--13章 新污染物简介--- 人工智能与新污染物控制.pdf VIP
- 提高学习效率的六大诀窍五大方法.docx
- 2025年江苏省盐城市中考地理试卷及答案.docx VIP
- 化工制图习题集答案(20201030132317).pdf VIP
- DLT5427-2022年火力发电厂初步设计内容深度规定.doc
- 2025微博娱乐白皮书.docx VIP
- DL-T5153-2024火力发电厂厂用电设计技术规程.pptx VIP
- 体育教学论第4章.ppt VIP
原创力文档

文档评论(0)