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...