码迷,mamicode.com
首页 > 其他好文 > 详细

栈应用之括号匹配

时间:2014-12-10 14:07:04      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

 

                   栈的使用之括号匹配

Char s[n]是一个字符串数组。Stack是一栈,i是元素对应的下表。设一个char flag[n]数组,用来标记是否匹配,数组中数值是‘l’(左不匹配,即没有找到右括号),‘r’(右不匹配),‘o’匹配成功。

算法描述:

(1)遍历该字符串数组。

While(遍历){

 if遇到‘(’,do stack.push(i)(i 是‘(’对应的数组下表),flag[i]=’o’(不一定就是匹配成功,以后遍历完如果stack还有元素,说明没有左匹配,要改成‘l’;如果没有,则就是真正的匹配成功了);

if遇到‘)’,if stack不为空,do stack.pop()(说明匹配),flag[i]=’o’。);如果为空就不匹配,flag[i]=’r’

}  do (2)

(2)如果stack.empty是false,则do while(!stack.empty()){  flag[stack.top()]=’r’(将之前的‘o’修改掉);stack.pop() }

bubuko.com,布布扣
 1 // try.cpp : Defines the entry point for the console application.
 2 //
 3 /************************************************************************/
 4 /*    栈应用之括号匹配                                                         */
 5 /************************************************************************/
 6 #include "stdafx.h"
 7 #include"stack"
 8 #include"string.h"
 9 using namespace std;
10 #define FOR(n) for (int i=0;i<n;i++)
11 stack<int> mystack;
12 char flag[1000];
13 char str[1000];
14 int main(){
15 
16     while (scanf("%s",str)!=EOF)
17     {
18     
19         memset(flag,0,strlen(str));
20         FOR(strlen(str)){
21             if (str[i]==()
22             {
23                 mystack.push(i);
24                 flag[i]=o;
25             }
26             else if(str[i]==)){
27                 if (!mystack.empty())
28                 {
29                     mystack.pop();
30                     flag[i]=o;
31                 }
32                 else flag[i]=r;
33             }
34         }
35         while (!mystack.empty())
36         {
37             flag[mystack.top()]=l;
38             mystack.pop();
39         }
40         flag[i]=0;
41         puts(str);
42         puts(flag);
43     
44     }
45 }
View Code

 

栈应用之括号匹配

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/xuexiaohei/p/4155165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!