實驗3 棧應用(1

2021-10-23 04:08:13 字數 1717 閱讀 5412

用棧adt應用:對稱符號匹配判斷

輸入一行符號,以#結束,判斷其中的對稱符號是否匹配。對稱符號包括:

輸出分為以下幾種情況:

(1)對稱符號都匹配,輸出 「 right. 「

(2) 如果處理到最後出現了失配,則輸出兩行:

第一行:matching failure.

第二行:loss of right character $$.... 其中$$... 是按巢狀順序對應的右匹配符號。

(3)處理到某個符號時失配了,則輸出兩行或三行:

第一行: the n character '$' is wrong." ,其中n是出錯符號的序號,$是出錯的符號;

第二行: loss of left character $.」 其中 $ 是當前符號的左匹配符號。

(如果有的話)第三行:loss of right character $$...」 其中$$... 是按巢狀順序對應的右匹配符號。

例如:

輸入(a.b)>#

輸出:the 6 character >』 is wrong.

loss of left character <.

輸入 :

輸出:matching failure.

loss of right character }).

例如:輸入 result

as(*x<))}>)#

right.

(a.b)>#

the 6 character 『>』 is wrong.

loss of left character <.

主要是注意第三種情況

給一組樣例}}

.

#include

#include

#include

#include

#include

using

namespace std;

char stander[2]

[4]=

','>'};

intmain()

'||s[i]

==']'

||s[i]

=='>'

)char c=sta.

top();

int note=1;

for(

int j=

0; j<

4; j++)}

if(note)

sta.

pop();

if(!sign)

break;}

}if(!sign)

} cout<<

'.'<}return0;

}int flag=0;

if(sign&&

!sta.

empty()

) cout<<

"matching failure.\nloss of right character "

,flag=1;

while

(sign&&

!sta.

empty()

)}if(flag)

cout<<

'.'

if(sign)

cout<<

"right."

}

3 棧的應用

棧的應用很廣,函式的呼叫的底層實現,和實現表示式值得計算,可以實現括號的匹配,和瀏覽器的前進和後退的實現。import org.junit.test import com.ypl.demo.arraystack 遇到數字直接壓人棧中。左括號在進入棧中之前元素優先順序最高。左括號在進人棧後優先順序最低...

棧 佇列及其應用 實驗題

1.完成下面的棧類qstack,使用其中的雙佇列實現入棧 出棧等基本運算 template class qstack public stack qstack 完成下列函式的 void clear void push const e it e pop const e topvalue const vi...

實驗二 棧和佇列的應用

實驗目的 本次實驗的目的在於使學生深入了解棧和佇列的特徵,掌握在實際問題背景下的靈活運用。實驗要求 正確設計和實現本程式,記錄輸出結果。實驗內容 1 佇列的各種基本操作實現。2 十進位制數向n進製資料的轉換。棧的應用 附 include include include define overflow...