使用純遞迴判斷括號是否匹配

2021-07-04 11:18:42 字數 484 閱讀 9612

判斷括號大家可能都會,無非就是進棧出棧的問題,但是我們一般都會顯式的定義乙個棧,一般就是乙個陣列,現在有乙個問題,要求不能使用顯示棧,不能用陣列,甚至不能用指標,當然也不能用stl,就使用純遞迴,而且包含三種括號,怎麼做呢?

這裡,我提供一種思路:

1.既然是遞迴,無非也就是棧,這裡,我們將第一層做個標記#,表示這是乙個接受層

2.在之後的每一層,首先用getchar()輸入乙個字元,然後與上一層的輸入做比較,如果不匹配,繼續輸入,如果匹配,不僅要退出本層遞迴,還要退出上層遞迴。

3.如果輸入的資料為回車,那麼只需要判斷上一層的符號,如果是#,說明全部匹配成功,否則就失敗了。

#include #include #include #include using namespace std;

const double pi=4.0*atan(1.0);

void judge(char pre)

//cout<<"flag:"<

判斷括號是否匹配

日期 2009.6.20 問題 設計乙個演算法,判斷乙個算術表示式中的括號是否配對。算術表示式儲存在帶頭結點的單迴圈鍊錶中,每個結點有兩個域 ch和 link 其中ch 域為字元型別。1 思路 根據括號的特點 進行匹配的時候,第乙個做括號最後乙個匹配,最後乙個左括號與第乙個右括號相匹配,恰好可以使用...

判斷括號是否匹配 堆疊

1.有效的括號 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示...

利用棧判斷括號是否匹配

輸入格式如下 3 輸出格式如下 yes no yes 演算法描述 利用棧來判斷 注意出棧時,考慮棧是否為空 最後匹配的結果應該是棧為空 1 從左到右進行掃瞄字元 2 若為左括號 else public boolean isbalanced string str elseelseelse end fo...