《資料結構與演算法》課程設計 40 括號匹配的檢驗

2021-10-17 10:59:26 字數 966 閱讀 9003

問題描述:

假設表示式中允許有兩種括號:圓括號和方括號,其巢狀的順序隨意,即(()[ ])或[([ ] [ ])]等為正確格式,[( ])或(((]均為不正確的格式。檢驗括號是否匹配的方法可用「期待的緊迫程度」這個概念來描述。例如:考慮下列的括號序列:

[ ( [ ] [ ] ) ]

1 2 3 4 5 6 7 8

當計算機接受了第1個括號以後,他期待著與其匹配的第8個括號的出現,然而等來的卻是第2個括號,此時第1個括號「[」只能暫時靠邊,而迫切等待與第2個括號相匹配的 第7個括號「)」的出現,類似的,因只等來了第3個括號「[」,此時,其期待的緊迫程度較第2個括號更緊迫,則第2個括號只能靠邊,讓位於第3個括號,顯然第3個括號的期待緊迫程度高於第2個括號,而第2個括號的期待緊迫程度高於第1個括號;在接受了第4個括號之後,第3個括號的期待得到了滿足,消解之後,第2個括號的期待匹配就成了最急迫的任務了,…… ,依次類推。可見這個處理過程正好和棧的特點相吻合。

基本要求:

讀入圓括號和方括號的任意序列,輸出「匹配」或「此串括號匹配不合法」。

測試資料:

輸入([ ]()),結果「匹配」

輸入 [( )],結果「此串括號匹配不合法」

#include

#include

#include

using

namespace std;

/** * 判定括號序列是否合法

* @param str 括號序列

* @return 返回棧是否為空

*/bool

judge

(const string &str)':

if(s.

top()!=

'}return s.

empty()

;}intmain()

資料結構與演算法課程設計

題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...

資料結構與演算法課程設計 Prim演算法

題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...

資料結構與演算法課程設計 Prim演算法

題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...