資料結構上機題目

2021-09-06 06:07:35 字數 3406 閱讀 5085

第二次: sqlist-順序表

2.11 設順序表va中的資料元素遞增有序。試寫一演算法,將x插入到順序表的適當位置上,以保持該錶的有序性。

2.21 試寫一演算法,實現順序表的就地逆置,即利用原表的儲存空間將線性表(a1,a2,…,an)逆置為(an,an-1,…,a1)。

第三次: linklist-單鏈表

2.15已知指標ha和hb分別指向兩個單鏈表的頭結點,並且已知兩個鍊錶的長度分別為m和n。試寫一演算法將這兩個鍊錶連線在一起(即令其中乙個表的首元結點連在另乙個表的最後乙個結點之後),假設指標hc指向連線後的鍊錶的頭結點,並要求演算法以盡可能短的時間完成連線運算。

請分析你的演算法的時間複雜度。

2.19已知線性表中的元素以值遞增有序排列,並以單鏈表作儲存結構。試寫一高效的演算法,刪除表中所有值大於mink且小於maxk的元素(若表中存在這樣的元素),同時釋放被刪結點空間,並分析你的演算法的時間複雜度(注意,mink和maxk是給定的兩個參變數,它們的值可以和表中的元素相同,也可以不同)。

第四次: cdlinklist-迴圈鍊錶

2.33已知由乙個線性鍊錶表示的線性表中含有三類字元的資料元素(如:字母字元、數字字元和其他字元),試編寫演算法將該線性表分割為三個迴圈鍊錶,其中每個迴圈鍊錶表示的線性表中均只含一類字元。

2.38設有乙個雙向迴圈鍊錶,每個結點中除有prior,data和next三個域外,還增設了乙個訪問頻度域freq。在鍊錶被起用之前,頻度域freq的值均初始化為零,而每當對鍊錶進行一次locate(l,x)的操作後,被訪問的結點(即元素值等於x的結點)中的頻度域freq的值便增1,同時調整鍊錶中結點之間的次序,使其按訪問頻度非遞增的次序順序排列,以便始終保持被頻繁訪問的結點總是靠近表頭結點。

試編寫符合上述要求的locate操作的演算法。

第五次: outqueue-實驗1線性表

實驗目的

熟悉線性表的基本運算在順序儲存結構和鏈式儲存結構上的實現,其中重點熟悉鍊錶的各種操作。

時間要求:4學時

問題描述:

約瑟夫(joseph)問題的一種描述是:編號為1,2,3,…,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼〈正整數〉,一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止。試設計乙個程式求出出列順序。

基本要求:

利用單向迴圈鍊錶儲存結構模擬此過程,按照出列的順序列印出各人的編號。

實現提示:

程式執行後首先要求使用者指定初始報數上限值,然後讀取各人的密碼(小於30)。

選作內容:

在順序儲存結構上實現上述問題的操作。

input

輸入包括兩行,第一行包括報數上限值m和人數n,第二行為n個人的密碼,所有資料之間由空格分隔。

output

輸出一行,共n個整數,表示各編號人的出列順序。各數之間由空格分隔。

sample input

20 7

3 1 7 2 4 8 4

sample output

6 1 4 7 2 3 5

第六次: stackqueue-實驗2棧和佇列

實驗目的

熟悉棧和佇列的基本特性,掌握棧和佇列基本運算的實現過程。

時間要求:4+4學時

問題描述:

設停車場內只有乙個可停放 n 輛汽車的狹長通道,且只有乙個大門可供汽車進出,汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場內已停滿 n 輛汽車,則後來的汽車只能在門外的便道上等候, 一旦有車開走,則排在便道上的第一輛車即可開入,當停車場內某輛車要離開時,在它之後開入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其它車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用,當便道上汽車要離開時,排在它前面的汽車要先開走讓路,然後再依次排到隊尾,並且在便道上停車不收費。試為停車場編制按上述要求進行管理的模擬程式。

基本要求:

以棧模擬停車場,以佇列模擬車場外的便道,按照從終端讀入的輸入資料序列管理,每一組輸入資料報括三個資料項:汽車「到達」或「離去」資訊、汽車牌照號碼及到達或離去的時間,對每一組輸入資料進行操作後的輸出資料為: 若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內停留的時間和應交納的費用(在便遞上停留的時間不收費),棧以順序結構實現,佇列以鍊錶結構實現。

實現提示:

需另設一棧,臨時停放為給要離去的汽車讓路而從停車場退出來的汽車,也用順序儲存結構實現。輸入資料按到達或離去的時刻有序。棧中每個元素表示一輛汽車,包含有兩個資料項:

汽車牌照號碼和進入停車場的時間。

選作內容:

(1)兩個棧共享空間,思考應開闢陣列的空間是多少 ?

(2)汽車可有不同種類,則它們的占地面積不同,收費標準也不同,如 1 輛客車和 1.5 輛小汽車的占地面積相同,1輛十輪卡車占地面積相當於3輛小汽車的占地面積 。

(3)停放在便道上的汽車也收費,收費標準比停放在停車場的車低,請思考如何修改結構以滿足這神要求。

input

輸入第一行,包括兩個資料,第乙個整數為停車場最多可停放車輛數,第二個浮點數表示單位時間的停車費用。接下來有多行資料,每行有三個整數,第乙個為0或1,0表示進入車場,1表示離開車場;第二個整數為車號;第三個整數為進入或離開的時間。當一行中三個數均為0時表示輸入結束,所有資料之間由空格分隔。

output

輸出為三部分,第一部分為按離開停車場順序列印出的各車費用,每車一行,包括車號和費用(保留小數點後兩位)。第二部分佔一行為當前停車場中的所有車輛,從北到南順序輸出各車車號。第三部分佔一行為當前便道上的所有車輛,從前向後順序輸出各車車號。

各車號之間由乙個空格分隔。

sample input

2 1.5

0 1 5

0 2 10

1 1 15

0 3 20

0 4 25

0 5 30

0 6 35

1 2 40

0 7 45

1 6 50

0 0 0

sample output

1 15.00

2 45.00

3 4

7 5

第七次: btree-二叉樹

6.41編寫遞迴演算法,在二叉樹中求位於先序序列中第k個位置的結點的值。

6.42編寫遞迴演算法,計算二叉樹中葉子結點的數目。

6.43編寫遞迴演算法,將二叉樹中所有節點的左、右子樹相互交換。

第八次: bst-二叉排序樹

9-1一棵以二叉鍊錶儲存的二叉排序樹,並且可能存在值相同的結點。設計乙個演算法,按公升序列印出樹中所有結點,但相同值的結點只列印一次。

9-2一棵以二叉鍊錶儲存的二叉排序樹,並且可能存在值相同的結點。設計乙個演算法,統計樹中不同結點的個數。。

資料結構上機實驗題目2019

第一次上機 1 書p19 adt list 基本操作12個 1 用順序儲存結構實現 2 用鏈式儲存結構實現 2 習p18 2.21 2.22 3 習p18 2.25 2.26 4 習p18 2.29 2.30 5 習p19 2.38 第二次上機 1 書p45 adt stack 基本操作9個 用順序...

資訊專業資料結構上機實驗題目

第三章佇列 第十四周 1 定義乙個迴圈佇列實現下列操作 1 增加n個元素 2 刪除n個元素 3 判隊空,判隊滿 4 佇列中查詢元素 2 定義乙個鏈佇列,實現上述相同操作。第六章二叉樹 第十五周 1 定義二叉樹的儲存結構 2 實現如下操作 1 建立乙個具有n個結點的,給定形狀的二叉樹2 用遞迴演算法求...

資料結構上機實驗

一 實驗目的 1 掌握用visual c 6.0上機除錯順序表的基本方法 2 掌握順序表的基本操作,插入 刪除 查詢等演算法的實現 二 實驗內容 1 順序表基本操作的實現 問題描述 當我們要在順序表的第i個位置上插入乙個元素時,必須先將順序表中第i個元素之後的所有元素依次後移乙個位置,以便騰空乙個位...