2018 北京理工大學889 回憶


北理889只考一門數據結構,不像其他院校(408,912)計算機專業要考四大名著(機組,計網,數據結構,操作系統)。

下面列出的選擇填空題目不全,只有一些印象深刻的和比較重要的。(大題沒有考AVL樹,B+樹,關鍵路徑,線索二叉樹,哈夫曼樹,最小增量排序,基數排序有點兒失望)從算法題和簡答題可以看出來,北理還是比較注重基礎的,但是我在今年的卷紙上看到了往年的影子,拿到卷紙第一感覺是材質很一般,然后就是有種woc我是不是被透題了的感覺。。。今年選擇填空沒出文字游戲好評,卷面感覺沒有哪題有二義性。

成績已經出來了,數據結構122

 

轉載注明出處 :http://www.cnblogs.com/xuwangzihao/p/8099016.html 

感謝北理考研群各位伙伴一路陪伴:492030260 

 

選擇(20*2分)

前三道題考什么是邏輯結構什么是存儲結構。(存儲結構:線性非線性。邏輯結構:hash)

時間復雜度O(n^2)代表程序運行時間與n^2成正比

m階B-樹是m階平衡二叉樹

 無向圖任意一點可深搜遍歷所有的點意味着這圖是個連通圖

線性探測解決沖突的hash,k個數字映射到一個位置產生多少次沖突? k(k-1)/2

一個二叉樹,每個節點度為0或2,問你高度為h,最少多少個節點?(2h-1)

當一組數據里面的數都離它該在的位置很近的時候,用直接插入排序進行排序。

鄰接矩陣是對稱矩陣的圖是無向圖 

1001個點的完全二叉樹有501個葉子節點。

用數組存儲二叉樹,21個節點高度為6的至少需要把數組開多大?63

循環隊列存在a[0..20],尾指針指向尾元素,頭指針指向頭元素的前一個,現在頭指8尾指3,隊里有16個元素。

123456順序進棧,問不可能的出棧序列。

abcdef順序進入一個兩邊都可進,只能一邊出的隊列,問不可能的出隊序列。

 

填空(20*2分)

兩個串相等的充要條件?長度相等,對應位內容相同(超綱,不過幸好沒有考KMP)

給你一個廣義表,問你表長和深度。(超綱)

7階B-樹非根節點最少有幾個子樹

 20個數字做歸並排序,需要5趟歸並,第3趟時把長度為4的數據合並成長度為8的。

在稠密圖上求最小生成樹用prime算法比較好

無向的完全圖有多少個邊?有向的完全圖有多少個邊? n(n-1)/2, n(n-1)

給你幾個數,問你他們構成的二叉搜索樹長啥樣。

10個點的圖用Dijkstra,時間是10ms,則40個點大概160ms。(考它的時間復雜度的

希爾排序最后一趟的增量必須是1

有頭節點的鏈表為空的判斷條件是什么?head->next=0

順序表里存了n個數據,查找某個數據並命中最多需要關鍵字比較n次,不命中,需要比較n+1次。

 

簡答(4*10分)

1,漢諾塔時間復雜度分析。

O(2^n)

2,進棧順序是abcdefg,出棧序列是bdcfeag,問具體的進棧出棧次序。

操作                                棧                    輸出序列

push(a) push(b)              ab                    NULL  

pop(b)                             a                      b                   

push(c) push(d)              acd                  b   

pop(d) pop(c)                  a                     bdc

push(e) push(f)               aef                  bdc  

pop(f) pop(e) pop(a)       NULL              bdcfea              

push(g)                           g                     bdcfea                     

pop(g)                             NULL              bdcfeag                           

3,n*n的特殊矩陣(主對角線上三角矩陣)A壓縮存儲在一維數組s里,寫出s[k]和a[i][j]的具體關系。(略)

4,鏈式解決沖突的hash表,hash函數x%13,hash表容量13,給你12個數字,讓你畫出hash后的情況,問你命中時的ASL和不命中時的ASL。(略)

 不命中的ASL比較特別,要去看書不能想當然。

算法設計(3*10分)

1,刪除有頭節點鏈表最小值,有頭節點,傳入參數是頭節點的指針。

 1 typedef struct Link{
 2     ElemType data;
 3     Link* next;
 4 }*LinkList;
 5 bool deleteMin(LinkList head){
 6     if(!head->next)return 0;//fail
 7     //找到想要刪除的目標節點的前驅
 8     LinkList p=head->next,aim=head;
 9     while(p->next){
10         if(p->next->data<aim->data)aim=p;
11         p=p.next;
12     }
13     //屏蔽掉那個節點並釋放空間(刪除它)
14     p=aim->next;
15     aim->next=aim->next->next;
16     free(p);
17     return 1;//success
18 }
deleteMin

2,中序遍歷,非遞歸實現。(下面不是標准答案,標准答案去看書)

 1 #include<vector>
 2 #include<cstdio>
 3 using namespace std;
 4 typedef struct Node{
 5     int data;
 6     Node * lc;
 7     Node * rc;
 8 }BTNode;
 9 vector<pair<BTNode*,bool> > s;//second 表示它的左孩子是否訪問過
10 void inOrder(BTNode * root){
11     pair<BTNode*,bool> tmp;
12     tmp.first=root;tmp.second=0;
13     s.push_back(tmp);
14     while(!s.empty()){
15         tmp=s.back();
16         s.pop_back();
17         if(!tmp.second){
18             tmp.second=1;
19             if(tmp.first->lc){
20                 s.push_back(tmp);
21                 tmp.first=tmp.first->lc;
22                 tmp.second=0;
23                 s.push_back(tmp);
24             }else{
25                 s.push_back(tmp);
26             }
27         }else{
28             printf("%d\n",tmp.first->data);//work()
29             if(tmp.first->rc){
30                 tmp.first=tmp.first->rc;
31                 tmp.second=0;
32                 s.push_back(tmp);
33             }
34         }
35     }
36 }
37 //用到了C++的vector和pair,為了標記當前棧頂元素狀態,vector模擬棧
inOrder

3,遞歸實現的快排。

 1 int Partition(int *a,int l,int r){
 2     a[0]=a[l];
 3     while(l<r){
 4         while(l<r&&a[r]>=a[0])r--;
 5         a[l]=a[r];
 6         while(l<r&&a[l]<=a[0])l++;
 7         a[r]=a[l];
 8     }
 9     a[l]=a[0];
10     return l;
11 }
12 void QuickSort(int *a,int l,int r){
13     if(l<r){
14         int pivot=Partition(a,l,r);
15         QuickSort2(a,l,pivot-1);
16         QuickSort2(a,pivot+1,r);
17     }
18 }
quickSort

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM