棧ADT應用 對稱符號匹配判斷

2021-10-23 04:28:52 字數 2894 閱讀 2236

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

、 [ ] 、 ( )、 < >

輸出分為以下幾種情況:

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

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

第一行:matching failure.

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

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

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

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

例如:case 1:

輸入

(a.b)

>#

輸出

the 6 character >' is wrong.

loss of left character <

.

case 2:

輸入

(

).

case 3:

輸入

as

(*x<))

}>

)#

輸出

right.
case 4:

輸入

([)

]#

輸出

the 3 character ')' is wrong.

loss of left character (

.loss of right character ]

).

折騰了好久才全部通過。。。第四種情況的輸出不太好確定。。。

#include

#include

using

namespace std;

const

int maxsize=

1005

;class

stack

;stack::

stack()

void stack::

push

(char e)

void stack::

pop(

)int stack::

size()

char stack::

top(

)bool stack::

empty()

intmain()

'||ch==

']'||ch==

')'||ch==

'>')'

)' is wrong.\nloss of left character

if(sta.

top()==

'' is wrong.\nloss of left character ");

else

if(sta.

top()==

'<'

)printf

(">");

else

if(sta.

top()==

'(')

printf

(")");

sta.

pop();

}printf

(".\n");

return0;

}}else

if(ch==

']')

if(sta.

top()==

'[')sta.

pop();

else")

; sta.

pop();

}printf

(".\n");

return0;

}}else

if(ch==

')')

if(sta.

top()==

'(')sta.

pop();

else")

; sta.

pop();

}printf

(".\n");

return0;

}}else

if(ch==

'>')if

(sta.

top()==

'<'

)sta.

pop();

else")

; sta.

pop();

}printf

(".\n");

return0;

}}}}

if(!f)");

else

if(sta.

top()==

'(')

printf

(")");

else

if(sta.

top()==

'[')

printf

("]");

else

if(sta.

top()==

'<'

)printf

(">");

sta.

pop();

}printf

(".");

}}return0;

}

實驗三 用棧ADT應用 對稱符號匹配判斷

輸入一行符號,以 結束,判斷其中的對稱符號是否匹配。對稱符號包括 輸出分為以下幾種情況 1 對稱符號都匹配,輸出 right.2 如果處理到最後出現了失配,則輸出兩行 第一行 matching failure.第二行 loss of right character 其中 是按巢狀順序對應的右匹配符號...

棧的應用 左右符號匹配

在編譯器中,都有這麼乙個左右符號匹配的功能,這裡通過棧來模擬實現這一功能 這裡採用了 復用的方法,即使用了linkstack鏈棧,詳見 linkstack鏈棧 main.c include include include linkstack.h 判斷是否為左符號 int isleft char c ...

順序棧ADT模板簡單應用演算法設計 回文判斷

問題描述 應用 正讀與反讀都相同的字串行稱為 回文 序列。請使用順序棧,設計並實現乙個演算法,判斷依次讀入的乙個以 為結束符的字串行是否為形如 序列1 序列2 模式的字串行。其中序列1和序列2中都不含有字元 且序列2是序列1的逆序列。例如,a b b a 是屬於該模式的字串行,而 1 3 3 1 則...