資料結構筆試題目

2021-06-16 09:14:52 字數 1539 閱讀 4907

1、c++編成求二叉樹的深度;

int bintreedepth(link *head) }

2、排序二叉樹插入乙個節點或雙向鍊錶的實現

排序二叉樹:左小於根,根小於右。左右又分別是排序二叉樹。

前序遍歷:根左右

中序遍歷:左根右

後序遍歷:左右根

排序二叉樹插入乙個結點:大於左,往右找,小於右往左找,遞迴實現。

public void insert(root r, element e)

else

r.left = e;

}else if(r<=e)

else r.right = e;  }

}3、把乙個鍊錶反向,遞迴,非遞迴都寫一遍。

非遞迴:

inverse(link* head)

else

r=r->next;  }

}遞迴:

link* inverse(link* l)

link h = inverse(l->next);

l->next->next=l;

return h;  }

4、 試編寫3個函式實現  

(1)建立乙個雙向鍊錶  

(2)插入乙個節點  

(3)刪除乙個節點  略

5、二叉樹的前序遍歷

public void preorder(binararytree b)

6、下面哪種排序法對12354最快--插入排序應該最快。其次是快速排序,歸併排序。

a quick sort

b.buble sort

c.merge sort

快速排序:有乙個劃分元素,該元素左邊的所有元素都小於它,右邊的所有元素都大於它。

氣泡排序:依次比較相鄰的兩個數,將大數放在前面,小數放在後面。即首先比較第1個和第2個數,將大數放前,小數放後。這樣一趟之後,最小的數就放在了最後面。

歸併排序:將兩個有序的數列合併成乙個

希爾排序:基本思想:將整個無序序列分割成若干小的子串行分別進行插入排序。序列分割方法:將相隔某個增量h的元素構成乙個子串行。在排序過程中,逐次減小這個增量,最後當h減到1時,進行一次插入排序,排序就完成。增量序列一般採用:ht=2t-1,1≤t≤[log2n],其中n為待排序序列的長度。

堆排序:

基數排序:

7、哪種結構,平均來講,獲取乙個值最快 b

a. binary tree

b. hash table

c. stack 

8、乙個二叉樹的三種遍歷方法的輸出結果

前序,中序,後序。分別指根在前,中,後。答案略。

9、給兩個變數,如何找出乙個帶環單鏈表中是什麼地方出現環的

兩個指標,乙個步長為1,乙個步長為2,重合的地方就是環出現的地方。

10、雜湊表和陣列的定義,區別,優缺點

雜湊函式是乙個映象,即:將關鍵字的集合對映到某個位址集合上,它的設定很靈活,只要這個位址集合的大小不超出允許範圍即可。 

11、什麼是二分法查詢,程式設計實現。

二分法查詢針對有序數列。

和中間的比較,小於往左,大於往右

資料結構筆試題

一 如何判斷乙個單鏈表是有環的?注意不能用標誌位,最多只能用兩個額外指標 struct node bool check const node head return false 無環 true 有環 一種o n 的辦法就是 搞兩個指標,乙個每次遞增一步,乙個每次遞增兩步,如果有環的話兩者必然重合,反...

筆試題之資料結構

時間複雜度 整個演算法的執行時間與基本操作重複執行的次數成正比。參考kmp演算法,該演算法的時間複雜度為q n 通常,模式串的長度n比主串的長度m要小的多 穩定排序 排序前後,數值的相對前後位置不變的為穩定排序,否則為不穩定排序。1 簡單排序,時間複雜度o n的平方 不穩定 2 快速排序,時間複雜度...

資料結構筆試題三

一 選擇題 每小題2分,共8分 1.若需要利用形參直接訪問實參,則應把形參變數說明為 引數。a.指標 b.引用 c.值 2.在乙個單鏈表hl中,若要在指標q所至結點的後面插入乙個由指標p所指向的結點,則執行 a.q next p next p next q b.p next q next q p c...