考研資料結構面試總結

2021-10-06 07:29:43 字數 2486 閱讀 8500

day1

q1 雜湊訪問的優缺點:

a1 優點:檢索,增加,刪除節點操作都很快。缺點:可能會產生衝突,解決衝突會增加時間和空間的開銷。

q2 從有序表中刪除其值在給定值s與t之間的所有元素。(口述)

a2 先尋找值大於等於s的第乙個元素(第乙個刪除的元素),然後尋找大於t的第乙個人元素(最後乙個刪除的元素的下乙個元素),要將這段元素刪除,只需直接將後面的元素前移,然後更新順序表長度。

q3 從順序表中刪除其值在給定值s與t之間的所有元素。(口述)

a3 從前向後掃瞄順序表l,用k記錄下元素值在s到t之間元素的個數(初始時k=0),對於當前掃瞄的元素,若其值不在s到t之間,則前移k個位置,否則執行k++;

q4 從有序順序表中刪除所有重複的元素。

a4 用類似於直接插入排序的思想,初始時將第乙個元素視為非重複的有序表,之後依次判斷後面的元素是否與前面非重複有序表的最後乙個元素相同,若相同則繼續向後判斷,若不同則插入到前面非重複有序表的最後,直到判斷到表尾。

q5 將兩個有序順序表合併為乙個新的有序順序表。

a5 按順序取下兩個順序表表頭較小的節點存入新的順序表中,然後看哪個表還有剩餘,將剩下的部分加到新的順序表後面。

q6 頭插法與尾插法的區別

a6 頭插法生成的鍊錶中節點的次序與輸入資料的順序不一致。

q7順序結構只能用於儲存線性結構嗎?

a7 順序結構同樣適用於於樹和圖的儲存,如滿二叉樹的順序儲存。

q8 單鏈表中,增加乙個頭節點的目的:

a8 方便運算的實現。eg:不論鍊錶是否空,頭指標都是指向頭結點的非空指標,因此空表與非空表的處理就統一了。

q9靜態鍊錶相關:

a9靜態鍊錶用陣列表示,需要預先分配較大的連續空間,靜態鍊錶同時還具有一般鍊錶的特點,即插入和刪除不需要移動元素。

q10 在帶頭結點的單鏈表l中,刪除所有值為x的節點。(口述)

a10 用從頭至尾掃瞄單鏈表,pre指向*p節點的前驅,若p所指節點值為x則刪除,並讓p指向下乙個節點,否則讓pre,p後移一位。

q11 將帶有頭結點的單鏈表就地逆置。(口述)

a11 將頭結點摘下,然後從第一節點開始,一次插入頭結點的後面(頭插法),直到最後乙個節點位置。

q12 反向輸出乙個單鏈表。

a12 方法一:先將單鏈表逆置再輸出。方法二:利用遞迴來實現,每當訪問乙個節點時,先遞迴輸出它後面的節點,再輸出自身。

void r_print(linklist l)

print(l->data);

}q13 棧和佇列具有相同的?

a13 邏輯結構,都屬於線性結構。

q14 迴圈佇列隊空與隊滿區分:

a14 犧牲乙個單元來區分隊空和隊滿(常用方法)。隊滿:(q.rear+1)%maxsizeq.front;

隊空:q.rearq.front;

隊中元素個數:(q.rear-q.front+maxsize)%maxsize;

q15 用單鏈表實現佇列時,對頭在鍊錶的?位置。

a15 在鏈頭,方便刪除。

q16 棧的典型應用。

a16 遞迴,進製轉換,迷宮求解,括號匹配,區域性變數。 佇列應用:緩衝區,頁面替換演算法

q17 對於乙個問題的遞迴演算法求解和非遞迴演算法求解效率哪個高。

a17 通常非遞迴效率高,因為遞迴演算法中包含很多重複的運算。

q18 適用於壓縮儲存稀疏矩陣的兩種儲存結構。

a18 三元組表和十字鍊錶。

q19 樹的路徑長度是從樹根到每個節點路徑長度的總和。

q20 引入線索二叉樹的目的是:

a20 加快查詢節點前驅與後繼的速度。

q21 森林轉二叉樹

a21 兄弟加線,除第乙個孩子去線,旋轉。

q22 二叉樹轉森林

a22 若節點x是雙親y的左孩子,則把x的右孩子,右孩子的右孩子,。。。。。。都與y加線,最後去掉所有雙親與右孩子的連線。

q23 哈夫曼樹是帶權路徑長度最小的二叉樹,不一定是完全二叉樹。

構造過程中每次選根的權值最小的兩個樹,生成新的二叉樹。至於誰為左子樹誰為右子樹沒有限制,因此哈夫曼樹是不唯一的。 用於編碼和壓縮。

q24 什麼是字首編碼。

a24 若沒有乙個編碼是另乙個編碼的字首,則稱這樣的編碼為字首編碼。

q25 連通圖與強連通圖。

無向圖對應連通圖,n個節點的連通圖最少有n-1條邊。(eg星狀圖)

有向圖對應強連通圖,n個節點的強連通圖最少有n條邊。(eg環形圖)

q26 什麼是大根堆。

a26 大根堆要求根節點的關鍵字既大於等於左子女的關鍵字值,有大於等於右子女的關鍵字值。

q27判斷有向圖是否存在迴路的兩種方式。

a27 拓撲排序和深度優先遍歷演算法。

q28 求最小生成樹的方法。

a28 prim 和kruskal

q29 口述kruskal

a29 依次選取權值較小的邊,且不允許構成迴路。

q30 dijkatra研究的是什麼

a30 dijkatra研究的是單源點到其他各個終點的最短路徑。(無法口述過程)

資料結構(考研 面試)

參考清華大學嚴蔚敏資料結構與演算法 適用於考研 求職 本教程全部採用c語言實現 data struct ds 資料之間組織架構 結構 線性 seqlist list stack queue string array 非線性 tree graph1.1.1 資訊處理 計算機解決問題的大致步驟 具體問題...

資料結構總結 針對考研

1.深刻理解資料結構的概念,掌握資料結結構的 三要素 2.掌握計算語句頻度和估算演算法時間複雜度的方法。大綱要求 1.線性表的邏輯 2.線性表的順序儲存結構 3.線性表的鏈式儲存結構 靜態鍊錶 借助陣列來描述線性表的鏈式儲存結構,結點也有資料域data和指標域next,與前面所見的鍊錶中的指標不同的...

考研資料結構

一 考研中的變數型別 1 基本型別 int float char 2 指標型別 3 結構體型 陣列,結構體 4 void型 考研中 定義無返回值函式。二 控制語句 1 判斷語句if 做決策 2 迴圈語句 做重複的事 for while 講講break與continue break結束整個迴圈 con...