考研数据结构与算法之堆栈的使用(三)利用堆栈匹配括号
2014-04-27 13:27
405 查看
具体实现方法如下:
确实是我疏忽了,由于觉得简单就忘记了对它进行测试,结果今天使用的时候怎么也出不来结果。
int main(void) { SqStack S; InitStack(S); char str[255]; scanf("%s",str); int i = 0; while( str[i] != '\0') { if( (str[i]=='[') | (str[i]=='{') | (str[i]=='<') ) { Push(S, str[i]); }else if( (str[i]==']') || (str[i]=='}') || (str[i]=='>') ) { if(!StackEmpty(S)) { char t; GetTop(S, t); if( t == str[i]-2 ) Pop(S, t); }else break; } i++; } if( StackEmpty(S) && (str[i] == '\0') ) { printf("YES"); }else { printf("NO"); } system("pause"); }注意一个很有意思的问题,在教材中匹配的是括号是[] {}和()而我则不使用()原因是他俩的ASCII码相差为1而其他的都是2,为了运算方便而进行了简化。另外还要更正之前对GetTop方法的定义,修改后的该函数如下:
Status GetTop(SqStack &S, SElemType &e) { if( S.base == S.top ) return ERROR; e = *(S.top - 1); return OK; }
确实是我疏忽了,由于觉得简单就忘记了对它进行测试,结果今天使用的时候怎么也出不来结果。
相关文章推荐
- 面试算法:使用堆栈判断括号的匹配
- 算法复习--------------利用堆栈实现括号匹配
- 算法:括号匹配(栈的应用)-数据结构(7)
- 数据结构与算法-----堆栈-使用链表(链式结构)实现
- (编程训练)再回首,数据结构——使用栈判断括号匹配
- (编程训练)再回首,数据结构——(升级版)使用栈判断括号匹配
- 数据结构与算法问题 堆栈使用 2011年吉林大学计算机研究生机试真题
- C/C++数据结构通过顺序栈实现括号()匹配算法
- 数据结构与算法-----堆栈-使用数组(顺序结构)实现
- 数据结构与算法之动态数组实现堆栈
- Pku acm 3041 Asteroids 数据结构题目解题报告(十六)---- 匈牙利算法求二分图的最大匹配
- 数据结构与算法学习笔记——堆栈及其应用(10以内简单四则计算器)
- 数据结构之堆栈模拟应用(算法3.1)
- 【数据结构与算法】模式匹配——从BF算法到KMP算法(附完整源码)
- 算法笔记五:利用堆结构来对数据进行排序
- 数据结构——串的朴素模式和KMP匹配算法
- 数据结构——括号匹配
- 利用STL栈实现括号匹配算法
- [2134]数据结构实验之栈四:括号匹配 sdutOJ
- 数据结构实验之栈四:括号匹配