資料結構 棧的應用 NOI2 2 括號匹配問題

2022-09-19 07:06:09 字數 1292 閱讀 7534

棧是一種資料結構,相當於乙個容器,將乙個又乙個變數從頂端壓進去,需要使用時,又從頂端拿出來,其具體使用方法,下面是詳細講解:

#include必須使用此標頭檔案

stacka; 定義棧a,不一定只使用int,也可以使用char,甚至是node

好了,棧就建好了~\(≧▽≦)/~

scanf( "%d" , &x );

a.push( x );

將 x 壓入棧

將 y 賦值為棧a頂端的變數,即壓入的x

a.pop();

刪除棧頂元素,即x

a.empty()

判斷棧是否為空,是就返回1,否則返回0

好了,這就是棧的幾種用法,光說不行,來個例題:

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

輸入輸入包括多組資料,每組資料一行,包含乙個字串,只包含左右括號和大小寫字母,字串長度不超過100

注意:cin.getline(str,100)最多只能輸入99個字元!

輸出對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由"$","?"和空格組成,"$"和"?"表示與之對應的左括號和右括號不能匹配。

樣例輸入

((abcd(x)

)(rttyy())sss)(

樣例輸出
((abcd(x)

$$)(rttyy())sss)(

? ?$

棧的實現,看**講解吧:

**如下:

#include#include#include#include#include#includeusing namespace std;

int n;

stackx;//定義棧x

int main()

,b[110]=;

while(scanf("%s",a)==1)

{ printf("%s\n",a);

l=strlen(a);

for(i=0;i

資料結構 棧的應用 括號匹配

include include include 鏈式棧 括號匹配校驗 define success 0 define failure 1 typedef struct nodestnode def typedef struct linkstackstlinkstack def typedef voi...

資料結構 棧的應用 括號匹配的檢驗

棧的應用 括號匹配的檢驗 演算法內容 以此掃瞄所有字元,遇到左括號入棧,遇到右括號則彈出棧頂元素檢查是否匹配。匹配失敗的情況 1.左括號單 2.右括號單 3.左右括號不匹配 include include define maxsize 10 定義棧中元素的最大個數 typedef struct sq...

資料結構之棧(2 1)應用 括號匹配

編寫乙個演算法,判斷鍵盤輸入的表示式是否配對。假設括號只包含 1 所謂括號配對,就是 2 輸入的字串中,可能包含 也可能沒有 數字,及其他符號。3 每當掃瞄字串元素 現 需要進行括號匹配檢查。檢查方式為 看最近出現的 而用什麼儲存 呢?棧是選擇之一。那棧的儲存狀態是,要麼有 要麼為空。4 根據以上分...