数据结构之栈的应用:括号匹配问题
生活随笔
收集整理的這篇文章主要介紹了
数据结构之栈的应用:括号匹配问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
棧的應(yīng)用
- 括號(hào)匹配問(wèn)題:
- 原理:
- 代碼實(shí)現(xiàn):
括號(hào)匹配問(wèn)題:
原理:
1、括號(hào)匹配成功的情況:棧為空
2、括號(hào)匹配失敗的情況:
a、下一個(gè)為右括號(hào)但是和棧頂左括號(hào)不匹配
b、下一個(gè)是右括號(hào)但棧以空
c、所有的空號(hào)都匹配完成后棧不空
代碼實(shí)現(xiàn):
1、方法一
bool isValid(char * s){char *stack = (char*)malloc(strlen(s)+1);int top = 0;int i;// if(s[0] == ')' || s[0] == ']' || s[0] == '}')// return false;for(i = 0;i < strlen(s);i ++){if(s[i] == '(' || s[i] == '[' || s[i] == '{'){top ++;stack[top] = s[i];}else {if((s[i] == ')' && stack[top] == '(') || (s[i] == ']' && stack[top] == '[') || (s[i] == '}' && stack[top] == '{'))top --;elsereturn false;}}if(top == 0)return true;elsereturn false; }方法二:
bool isValid(char * s){char *stack = (char*)malloc(strlen(s)+1);int top = 0;int i;// if(s[0] == ')' || s[0] == ']' || s[0] == '}')// return false;for(i = 0;i < strlen(s);i ++){if(s[i] == '(' || s[i] == '[' || s[i] == '{'){top ++;stack[top] = s[i];}else //由ASCALL表可知if((stack[top]+1) == s[i] || (stack[top]+2) == s[i])top --;elsereturn false;}}if(top == 0)return true;elsereturn false; }方法三:
bool isValid(char *s){//SqStack S;char *Stack = (char*)malloc(strlen(s));//InitStack(S);int top = -1;for(int i = 0;i < strlen(s);i ++){if(s[i] == '(' || s[i] == '[' || s[i] == '{'){top ++;Stack[top] = s[i];}else{if(top == -1)return false;char topElem;if(s[i] == ')' && Stack[top] != '(')return false;if(s[i] == ']' && Stack[top] != '[')return false;if(s[i] == '}' && Stack[top] != '{')return false;top --;} }if(top == -1)return true;elsereturn false; }總結(jié)
以上是生活随笔為你收集整理的数据结构之栈的应用:括号匹配问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (王道408考研操作系统)第四章文件管理
- 下一篇: iOS发展- 文件共享(使用iTunes