資料結構練習題 2 8 符號配對 20分

2021-10-24 21:26:03 字數 1863 閱讀 4850

請編寫程式檢查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公升序鏈結...