初學棧 遇到的簡單括號匹配問題

2021-09-24 00:04:32 字數 1062 閱讀 4973

現在,有一行括號序列,請你檢查這行括號是否配對。
輸入描述:

第一行輸入乙個數n(0輸出描述:

每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no

樣例輸入:

3[(

])(]

)([[

]()]

)

樣例輸出:

no

noyes

答題想法:用top指向棧頂 如果是』(『或者』[『則直接入棧 top++ 如果是』)『或者』]『則判斷是否與棧頂的元素匹配 即是否與top指向的元素匹配(』(『與』)』 '[『與』]'匹配 )如果匹配則進行出棧操作 即top–
#define _crt_secure_no_warnings

#include

#include

#include

intmain

(void);

char temp;

int n,flag=2;

scanf

("%d"

,&j)

;getchar()

;for

(k =

0; k < j; k++

)else

if(a[i]

=='('

)//如果為'('入棧

if(a[i]

==']'

)//如果為')'則判斷是否匹配

else}if

(a[i]

==')'

)else}}

} c[k]

= flag;

//將flag的值存進陣列中 1 2 分別代表 匹配 不匹配

getchar()

;}for(i =

0; i < k; i++

)else

if(c[i]==1

)}system

("pause");

return0;

}

括號匹配問題 棧

根據棧的先進後出特點 將遇到的左括號依次壓入棧中 遇到右括號時取出棧頂元素 退棧處理 比較棧頂元素和輸入的括號是否想匹配 注意 1.判斷的字串流的奇偶性 2.注意輸入的字元是否為所需的括號字元 3.考慮棧的棧頂和棧底是否溢位 4.棧在開始和結束時都應該是空的.所以匹配到最後還要判斷棧是否為空,若非空...

簡單括號匹配問題

學習心得 題目如下 在某個字串中有左 右括號 本演算法只匹配小括號,有其他括號時類似處理,多增加幾個選擇分支即可 及大小寫字母 寫乙個程式,找到無法匹配的左括號和右括號,輸出原來的字串,並在下一行標出不能匹配的括號。不能匹配的左括號用 標註,不能匹配的右括號用 標註。樣例輸入 rttyy ss 樣例...

括號匹配問題(棧模擬)

在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用 標註,不能匹配的右括號用 標註.輸入包括多組資...