永发信息网

C++作业 栈实现括号匹配 麻烦帮我改一下代码,谢谢啦

答案:2  悬赏:0  手机版
解决时间 2021-03-16 21:00
  • 提问者网友:最美的风景
  • 2021-03-16 12:08
#include
#include
using namespace std;

template
class Stack
{
private:
T list[MAX + 1];
int top;
public:
Stack();
Stack(int SMAX)
{
MAX = SMAX;
top == -1;

};
~Stack();
void push(const T &item)
{
top++;
list[top] = item;
};//将item压栈
T pop()
{
item = list[peek];
peek--;

};//将栈顶元素弹出栈
const T & peek() const
{
return list[top];
};//访问栈顶元素
bool isEmpty() const
{
if (top == -1)
return true;
else return false;
};//判D断是否栈空
};
//请完成栈模板类的实现,并解决括号匹配问题
bool match(string str)
{
Stack zhan;
char top;
zhan.peek(top);
for (int i = 0; i {
if (str[i] == '(')
zhan.push(top);
else
if (str[i] == ')')
zhan.pop(top);
}
if (zhan.isEmpty())
cout << "Yes";
else
cout << "No";

}
int main()
{
string str = "";
cin >> str;
match(str);

}
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-03-16 12:36
#include
#include
using namespace std;

template
class Stack
{
private:
T list[MAX + 1];
int top;
public:
Stack()
{
top = -1;
};

~Stack(){};

//将item压栈
void push(const T &item)
{
top++;
list[top] = item;
};

//将栈顶元素弹出栈
T pop()
{
T item = list[top];
top--;
return item;
};

//访问栈顶元素
const T& peek() const
{
return list[top];
};

//判断是否栈空
bool isEmpty() const
{
if (top == -1)
return true;
else
return false;
};
};

//请完成栈模板类的实现,并解决括号匹配问题
bool match(string str)
{
Stack zhan;
string::iterator it = str.begin();
for(; it != str.end(); ++it)
{
if (*it == '(')
{
zhan.push('(');
}
else if (*it == ')')
{
if (zhan.isEmpty())
break;
zhan.pop();
}
}

bool bMatch = zhan.isEmpty() && it == str.end();
if (bMatch)
cout << "Yes";
else
cout << "No";
return bMatch;
}

int main()

{
string str = "";
cin >> str;
match(str);

return 0;
}
全部回答
  • 1楼网友:忘川信使
  • 2021-03-16 14:12
stack s(0); char a[100]; char *st = a; cout<<"请输入你要检查的字符串:"<>a; while((*st)!='\0') { if((*st) == '(' || (*st) == '{' || (*st) == '[') { s.push((*st)); } if((*st) == ')'||(*st) == '}'||(*st) == ']') { if(((*st) ==')'&& (s.top() =='(')) || ((*st) =='}'&& (s.top() =='{')) || ((*st) ==']'&& (s.top() =='['))) { s.pop(); cout<<"括号匹配"<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯