簡體   English   中英

用於匹配分組符號的適當數據結構?

[英]Appropriate data structure for matching grouping symbols?

我應該編寫一個程序,將算術表達式作為輸入。 程序輸出表達式是否包含匹配的分組符號,如果平衡則計算表達式結果。

例如,算術表達式{25 + (3 – 6) * 8}是平衡的,其結果等於1

7 + 8 * 2是平衡的,其結果等於23

但是,表達式5 + {(13 + 7) / 8 - 2 * 9不包含匹配的分組符號,因此我們不會計算其結果。

什么是最好的數據結構(鏈表、堆棧等)?

使用堆棧。 最后一個打開的括號應該是第一個關閉的。

表達式從左到右開始。

繼續將左括號推入堆棧。

當你找到一個右括號時,檢查它是否等於棧頂(最后打開的應該先關閉),如果是,則將其彈出。 如果不是,則表達式不平衡。

如果堆棧最后為空,則表達式是平衡的。

#include <iostream>

#包括

使用命名空間標准;

int main(){

字符串 str;

cout<<"請輸入字符串:";

std::getline (std::cin,str);

布爾標志=真;

堆棧 st;

for(int i=0;i<str.size();i++){

if( (str.at(i)>='0' && str.at(i)<='9') || str.at(i)=='+' || str.at(i)== '-' || str.at(i)=='/'|| str.at(i)=='*' || str.at(i)==' ' ){

// cout<<str.at(i) <<"來了"<<endl;

繼續;

}

if( str.at(i)=='{' || str.at(i)=='(' ){

st.push(str.at(i));

}

else if(!st.empty() &&((st.top() == '{' && str.at(i) == '}') || (st.top() == '(' && str .at(i) == ')')))

聖流行();

別的{

標志=假;

休息;

}

}

if(!st.empty()){

cout<<"不匹配"<<"\\n";

}別的{

如果(標志)

cout<<"匹配"<<"\\n";

別的

cout<<"不匹配"<<"\\n";

}

返回0;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM