急求!C++,好心人来帮帮我用栈解决括号匹配问题,补全下面的代码就行了。万分感谢!

#include"stdafx.h"#include"iostream"#include<string>usingnamespacestd;classstack{publ... #include "stdafx.h"
#include"iostream"
#include<string>
using namespace std;

class stack{
public://顺序栈成员
char *data;
int top;
int size;
stack();
stack(int size);
void push(const char data);
bool isEmpty();
bool pop(char&data);
};

stack::stack() {
}//构造函数

stack::stack(int size) {
}//带参构造函数

void stack::push(const char data){
}//push 数据入栈

bool stack::isEmpty() {
}//isEmpty 判断是否为空

bool stack::pop(char&data) {
}//pop 数据出栈

bool match(string str){
stack zhan;
char top;
for(unsigned int i=0;i<str.length();i++){
if(str[i]=='(') {
}
else if(str[i]=='[') {
}
else if(str[i]==')') {
}
else if(str[i]==']') {
}
else
continue;
} //for 循环结束
if(zhan.isEmpty()) //最后栈若为空,则证明括号匹配,返回 1;否则返回 0.
return 1;
else
return 0;
}//match 全局函数,括号匹配算法
int _tmain(int argc, _TCHAR* argv[]) {
string str=""; cin>>str;
int check;
check=match(str);
if (check==1) cout<<"模式匹配"<<endl;
else
cout<<"不匹配"<<endl; return 0;
}
展开
 我来答
zhaoyj163em
2014-11-02 · TA获得超过1033个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:364万
展开全部
#include"iostream"
#include<string>
using namespace std; 

class stack{ 
public://顺序栈成员
char *data;
int top;
int size; 
stack();
stack(int size); 
void push(const char data);
bool isEmpty();
bool pop(char&data);
~stack();//原来没有的,我觉得最好加一个……
};

stack::~stack()
{
delete data;
}

stack::stack() {
data = new char[100];//data用来存储左括号的
size = 100;//当前data的大小
top = 0;//当前存储的左括号的数目
}//构造函数

stack::stack(int size) {
this->size = size > 0 ? size : 100;//防止size < 0
data = new char[this->size];
top = 0;
}//带参构造函数

void stack::push(const char data){
if (top == size) //将栈的空间扩大
{
char *t = this->data;
this->data = new char[size + (size >> 1)]; // 增加原来容量的一半
for (int i = 0;i < this->size;i++) //复制旧数据
this->data[i] = t[i];
size += size >> 1;
delete t;
}
this->data[top++] = data;//增加一个左括号到栈顶
}//push 数据入栈

bool stack::isEmpty() {
return top == 0;
}//isEmpty 判断是否为空

bool stack::pop(char&data) {
if (top == 0)//栈为空
return false;
data = this->data[--top];
return true;
}//pop 数据出栈

bool match(string str){
stack zhan; 
char top; 
for(unsigned int i=0;i<str.length();i++){
if(str[i]=='(') { // 左括号进栈
zhan.push('(');
}
else if(str[i]=='[') { // 左括号进栈
zhan.push('[');
}
else if(str[i]==')') { // 判断右括号是否被匹配
if (!zhan.pop(top))
return 0;
if (top != '(')
return 0;
}
else if(str[i]==']') { // 判断右括号是否被匹配
if (!zhan.pop(top))
return 0;
if (top != '[')
return 0;
}
else
continue; 
} //for 循环结束
if(zhan.isEmpty()) //最后栈若为空,则证明括号匹配,返回 1;否则返回 0.
return 1;
else
return 0; 
}

//match 全局函数,括号匹配算法
int main(int argc, char* argv[]) {
string str=""; 
cin>>str;
int check;
check=match(str);
if (check==1) 
cout<<"模式匹配"<<endl; 
else
cout<<"不匹配"<<endl; return 0; 
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式