輸入一行符號,以#結束,判斷其中的對稱符號是否匹配。對稱符號包括:
、 [ ] 、 ( )、 < >
輸出分為以下幾種情況:
(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 則...