亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

和老師一樣的代碼,為啥是不匹配呢

#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
提交
取消
數據結構探險—棧篇
  • 參與學習       62770    人
  • 解答問題       105    個

棧,先入后出(FILO),帶領大家體會棧這種數據結構的美妙

進入課程

和老師一樣的代碼,為啥是不匹配呢

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號