請編寫程式檢查c語言源程式中下列符號是否配對:/與/、(與)、[與]、。
輸入為乙個c語言源程式。當讀到某一行中只有乙個句點.和乙個回車的時候,標誌著輸入結束。程式中需要檢查配對的符號不超過100個。
首先,如果所有符號配對正確,則在第一行中輸出yes,否則輸出no。然後在第二行中指出第乙個不配對的符號:如果缺少左符號,則輸出?-右符號;如果缺少右符號,則輸出左符號-?。
輸入樣例1:
void
test()
.
no
/*-?
void
test()
].
no?-
]
void
test()
.
yes
建立兩個棧,乙個用來放所有括號,乙個專門用來放左括號
輸入**塊後,先進行遍歷將**塊中所有括號都存入括號棧中(小細節:將 '/*' 和 '*/' 用'<' 和 '>'代替)
通過遍歷括號棧,遇到左括號就將它存入左括號棧,如果遇到右括號,先判斷左括號是否為空,如果為空說明這個右括號缺少乙個左括號匹配,如果不為空且左括號棧的棧頂恰好是匹配項,則將左括號棧頂彈出;若不是匹配項,說明左括號缺少乙個右括號匹配。
#
include
using
namespace std;
char kuohao[
110]
,zuokuohao[
110]
;int num1 =
0,num2 =0;
void
output
(char x)
intmain()
')if(str[i]
=='/'
&& str[i+1]
=='*'
)else
if(str[i]
=='*'
&& str[i+1]
=='/')}
}for
(i =
0;i < num1;i++)if
(kuohao[i]
=='('
|| kuohao[i]
=='['
|| kuohao[i]=='
else
if(kuohao[i]
==')')if
(zuokuohao[num2-1]
=='('
)//如果左括號棧頂為匹配項,將該匹配項彈出棧
num2--
;else
}else
if(kuohao[i]
==']')if
(zuokuohao[num2-1]
=='['
) num2--
;else
}else
if(kuohao[i]
=='}')"
<< endl;
return0;
}if(zuokuohao[num2-1]
=='}else
if(kuohao[i]
=='>')if
(zuokuohao[num2-1]
=='<'
) num2--
;else}if
(num2 >0)
output
(zuokuohao[num2-1]
);else
cout <<
"yes"
<< endl;
return0;
}
資料結構練習題
設pa,pb分別指向兩個帶頭結點的有序 從小到大 單鏈表。仔細閱讀如下的程式,並回答問題 1 程式的功能 2 s1,s2中值的含義 3 pa,pb中值的含義。include include typedef struct list list void exam list pa,list pb else...
資料結構 緒論 練習題
a.找出資料結構的合理性 b.研究演算法的輸入 輸出關係 c.分析演算法的效率以求改進 d.分析演算法的易讀性 答案 c 什麼是資訊?廣義地講,資訊就是訊息。宇宙三要素 物質 能量 資訊 之一。它是現實世界各種事物在人們頭腦中的反映。此外,人們通過科學儀器能夠認識到的也是資訊。資訊的特徵為 可識別 ...
資料結構練習題 2 3 鍊錶拼接 20分
本題要求實現乙個合併兩個有序鍊錶的簡單函式。鍊錶結點定義如下 struct listnode struct listnode mergelists struct listnode list1,struct listnode list2 其中list1和list2是使用者傳入的兩個按data公升序鏈結...