为了账号安全,请及时绑定邮箱和手机立即绑定

和老师一样的代码,为啥是不匹配呢

#include<iostream>

#include"MyStack.h"

using namespace std;

int main()

{

MyStack<char> *pStack=new MyStack<char>(30);

MyStack<char> *pNeedStack=new MyStack<char>(30);

char str[]="[()]";

char currentNeed=0;

for(int i=0;i<strlen(str);i++)

{

if(str[i]!=currentNeed)

{

pStack->push(str[i]);

switch(str[i])

{

case'[':

if(currentNeed!=0)

{

pStack->push(currentNeed);

}

currentNeed=']';

break;

case'(':

if(currentNeed!=0)

{

pStack->push(currentNeed);

}

currentNeed=')';

break;

default:

cout<<"不匹配"<<endl;

system("pause");

return 0;

}

}

else

{

char elem;

pStack->pop(elem);

if(!pNeedStack->pop(currentNeed))

{

currentNeed=0;

}

}

}

if(pStack->stackEmpty())

{

cout<<"匹配"<<endl;

}

else

cout<<"不匹配"<<endl;

delete pStack;

pStack=NULL;

delete pNeedStack;

pNeedStack=NULL;

system("pause");

return 0;

}

求大神指点

正在回答

2 回答

兄弟,找着你的错误了,在for循环里,每次拿取的str[i]和currentNeed相比较,如果不相等,就需要把str[i]压入栈pStack中,到这一步你还是正确的。但是接下来当currentNeed!=0时,需要把currentNeed压入栈pNeedStack中时,你却压入到了pStack栈中了。

https://img1.sycdn.imooc.com//5bf2baa300014c5202540417.jpg

只需要把pStack->push修改为pNeedStack->push即可。

2 回复 有任何疑惑可以回复我~

先定位代码出错的地方  在翻开老师的视频  一点一点仔细的看  

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
数据结构探险—栈篇
  • 参与学习       62724    人
  • 解答问题       102    个

栈,先入后出(FILO),带领大家体会栈这种数据结构的美妙

进入课程

和老师一样的代码,为啥是不匹配呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信