用棧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...