九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

堆栈的应用(1) 平衡符号 C++实现

  堆栈的应用(1) 平衡符号 C++实现

write by** 九天雁翎(JTianLing) –
blog.csdn.net/vagrxie
**

 

«Data Structures and Algorithm Analysis in C++»

--《数据结构与算法分析c++描述》 Mark Allen Weiss著 人民邮电大学出版 中文版第72面,堆栈的应用(1) 平衡符号

 

1 #include <stdio.h>  
2 #include  
<stdlib.h>  
3 #include  
<stack>  
4 #include  
<string>  
5 #include  
<iostream>  
6 **using**  **namespace**  std;  
7   
8 **bool**  CheckStack(**const**  **char**  ac,  
stack<**char** >& acSta)  
9 {  
10     **if**(ac == '(' ||  
ac == '[')  
11     {  
12         acSta.push(ac);  
13     }  
14     **else**  **if**(ac  
== ')')  
15     {  
16         **if**( acSta.empty() || acSta.top() != '(' )  
17         {  
18             **return**  false;  
19         }  
20         acSta.pop();  
21     }  
22     **else**  **if**(  
ac == ']')  
23     {  
24         **if**(acSta.empty() || acSta.top() != '[' )  
25         {  
26             **return**  false;  
27         }  
28         acSta.pop();  
29     }  
30   
31     **return**  true;  
32 }  
33   
34 **void**  DumpStack(stack<**char** >& acSta)  
35 {  
36     **if**(!acSta.empty())  
37     {  
38         cout  
<<"stack: ";  
39         **while**(!acSta.empty())  
40         {  
41             cout  
<<acSta.top() <<" ";  
42             acSta.pop();  
43         }  
44         cout  
<<endl;  
45     }  
46 }  
47   
48 **int**  main(**int**  argc, **char** *  
argv[])  
49 {  
50     **char**  lc;  
51     stack<**char** > lcSta;  
52     **while**(cin >> lc)  
53     {  
54         **if**(!CheckStack(lc, lcSta))  
55         {  
56             cout  
<<"Error happen: " <<lc  
<<endl;  
57             DumpStack(lcSta);  
58             exit(1);  
59         }  
60     }  
61   
62     DumpStack(lcSta);  
63   
64     exit(0);  
65 }  
66

 

write by** 九天雁翎** (JTianLing) –
blog.csdn.net/vagrxie

分类:  算法 
标签:  C++  堆栈  平衡符号 

Posted By 九天雁翎 at 九天雁翎的博客 on 2008年12月19日

前一篇: 《数据结构与算法分析-C++描述》List实现的问题,g++太符合标准,以至于有的时候虽然正确,但是却会让你吃惊 后一篇: 堆栈的简单C++实现