数据结构栈和队列的括号匹配函数
来源:互联网 发布:mac怎么升级到os10.11 编辑:程序博客网 时间:2024/06/10 13:58
个人觉得书上写的函数太乱,自己整理后写了一个,略简单
Stack.h
#include<iostream>
#include<assert.h>
using namespace std;
template <class T>
struct LinkNode {
T data ;
LinkNode <T> *link ;
};
//上面是LinkNode的声明
template <class T>
class Stack {
public:
//需要写的内容有Pop,Push,IsEmpty;
Stack ():top(NULL) {}
void Push ( const T & x ){//进栈
top =new LinkNode <T> (x ,top);
assert ( top !=NULL ) ;
}
bool Pop (){//退栈
if( IsEmpty() == true ) return false ;
LinkNode <T> *p =top ;
top = top->link ;
delete p;
return true ;
}
bool IsEmpty () const { return ( top == NULL )?true :false ; }
private:
LinkNode <T> *top ;
};
PMP.h(判断用的)
#include<iostream>
#include<string.h>
#include"Stack.h"
using namespace std;
//int maxLength = 100 ; 没有开辟一个新的栈却依旧可以执行代码 ,通过push将一个一个字符扔进栈,通过pop出栈,没有考虑栈的容量,代码无定义
void PrintMatchedPairs (string expression){
//需要开辟一个栈用来存放括号
Stack <char> s;
int length = expression.size();
for(int i = 1; i <= length ; i++){
if( expression [i-1] == '(' )//如果检测的是左括号;执行进栈的操作
s.Push(i) ;
else if( expression [i-1] == ')' ){//如果检测的是右括号,判断栈是否空,若栈不空,退栈成功
if(s.Pop() == true )
cout<<"匹配成功"<<endl;
else
cout<<"匹配失败,没有左括号参与匹配"<<endl;
}
}
while (s.IsEmpty () == false ){
s.Pop();
cout<<"栈中还有多余的括号,匹配失败 "<<endl;
}
}
//所需要执行的堆栈函数有Pop, Push, IsEmpty
main
#include<iostream>
#include<string>
#include"PMP.h"
using namespace std;
void main(){
cout<<"请输入想判断的字符串 : ";
string s;
cin >> s;
PrintMatchedPairs (s);
system ("pause");
}
- 数据结构栈和队列的括号匹配函数
- 【数据结构】 栈和队列 YTU 2238 括号匹配(栈
- C数据结构-栈和队列,括号匹配举例---ShinePans
- 栈和队列---括号匹配
- [栈和队列]括号匹配
- 括号匹配(栈和队列)
- 栈和队列应用之括号匹配
- YTU 2238: 括号匹配(栈和队列)
- 寒假第三天--栈和队列--数据结构实验之栈四:括号匹配 (栈)
- 寒假第三天--栈和队列--数据结构实验之栈四:括号匹配 (数组)
- 数据结构复习_栈和队列,应用_括号匹配&文件目录递归拷贝,
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 【二分匹配】 UVALive 6525 Attacking rooks
- bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- eclipse 导入一个maven工程后 一直显示 importing maven projects 10%
- 【多线程】(三)经典多线程问题
- vmware 安装mac 10.9.3
- 数据结构栈和队列的括号匹配函数
- 【瞎搞】 UVALive 6527 Counting ones
- HDU 1058 Humble Numbers
- Kettle 体系架构
- jquey 常用按钮操作
- LeetCode 139 Roman to Integer
- 微信公众平台开发之模板消息(Java)
- 安装VMware Workstation8.0.3
- OpenGL小探3——纹理映射