數據結構與算法期末復習題


在帶有頭結點的單鏈表HL中,要向表頭插入一個由指針p指向的結點,則執行( A )。    

A. p->next=HL->next; HL->next=p;       B. p->next=HL; HL=p;           C. p->next=HL; p=HL;                   D. HL=p; p->next=HL;

一個棧的輸入序列為1 2 3,則下列序列中不可能是棧的輸出序列的是(   C  )   

A. 2 3 1 B. 3 2 1   C. 3 1 2 D. 1 2 3

AOV網是一種( D )。        

A.有向圖      B.無向圖      C.無向無環圖    D.有向無環圖

采用開放定址法處理散列表的沖突時,其平均查找長度( B )。 

A.低於鏈接法處理沖突 B. 高於鏈接法處理沖突 C.與鏈接法處理沖突相同 D.高於二分查找

若需要利用形參直接訪問實參時, 應將形參變量說明為 ( D )參數。 

A.值 B.函數 C.指針 D.引用

在稀疏矩陣的帶行指針向量的鏈接存儲中,每個單鏈表中的結點都具 有相同的( A)。 

A.行號 B.列號 C.元素值 D.非零元素個數

從二叉搜索樹中查找一個元素時,其時間復雜度大致為 ( C )。 

A. O(n) B. O(1) C. O(log2n) D. O(n 2)

快速排序在最壞情況下的時間復雜度為( D )。

A.O(log2n)      B.O(nlog2n)       C.0(n)         D.0(n2)

設哈夫曼樹中的葉子結點總數為m,若用二叉鏈表作為存儲結構,則該哈夫曼樹中總共有( B )個空指針域。  

(A) 2m-1 (B) 2m (C) 2m+1 (D) 4m

 

對於一個長度為n的單鏈存儲的線性表,在表頭插入元素的時間復雜度為___O(1)______,在表尾插入元素的時間復雜度為____O(n)________。

設W為一個二維數組,其每個數據元素占用4個字節,行下標i從0到7 ,列下標j從0到3 ,則二維數組W的數據元素共占用__128_____個字節。W中第6 行的元素和第4 列的元素共占用____44_____個字節。若按行順序存放二維數組W,其起始地址為100,則二維數組元素W[6,3]的起始地址為____208______。(

W[i][j]的首地址 =
數組的在內存中的基地址(=100)
+ i * 列數(=6)* 每個元素zhuan占單元數(=4)
+ j *(=3) 每個元素占單元數(=4)
代入得:
W[3][2] 首地址 = 100 + 6 * 4 *4 + 3 * 4 = 208

廣義表A= (a,(a,b),((a,b),c)),則它的深度為_____3_______,它的長度為_____3_______

二叉樹是指度為2的________有序____________樹。一棵結點數為N的二叉樹,其所有結點的度的總和是_____n-1________。

對一棵二叉搜索樹進行中序遍歷時,得到的結點序列是一個____有序序列__________。對一棵由算術表達式組成的二叉語法樹進行后序遍歷得到的結點序列是該算術表達式的______后綴表達式____________。

對於一棵具有n個結點的二叉樹,用二叉鏈表存儲時,其指針總數為____2n_________個,其中______n-1_________個用於指向孩子,_______n+1__________個指針是空閑的。

若對一棵完全二叉樹從0開始進行結點的編號,並按此編號把它順序存儲到一維數組A中,即編號為0的結點存儲到A[0]中。其余類推,則A[ i ]元素的左孩子元素為___2i+1_____,右孩子元素為______2i+2_________,雙親元素為______(i-1)/2______。

在線性表的散列存儲中,處理沖突的常用方法有__________開放定址法______________和____________鏈接法_________________兩種。

當待排序的記錄數較大,排序碼較隨機且對穩定性不作要求時,宜采用_______快速________排序;當待排序的記錄數較大,存儲空間允許且要求排序是穩定時,宜采用_________歸並_______________排序。

在以HL為表頭指針的帶表頭附加結點的單鏈表和循環單鏈表中,判斷鏈表為空的條件分別為______HL→next =NULL__________和______HL=HL→next______________。

 

已知一個6x5稀疏矩陣如下所示

 

 

  (1)寫出它的三元組線性表;((1,5,1),(3,2,-1),(4,5,-2),(5,1,5),(6,3,7))

(2)給出三元組線性表的順序存儲表示。

 

 

 對於圖所示的有向圖若存儲它采用鄰接表, 並且每個頂點鄰接表中的邊結點都是按照終點序號從小到大的次序鏈接的,試寫出:

 

 

 

(1) 從頂點①出發進行深度優先搜索所得到的深度優先生成樹; (2) 從頂點②出發進行廣度優先搜索所得到的廣度優先生成樹;

DFS:1 2 3 4 5

BFS:2 3 4 5 1

寫出下述算法的功能: 

 

 

 

 

 

 

功能為:從初始點 vi 出發廣度優先搜索由鄰接表 GL 所表示的圖。

 

設計判斷單鏈表中結點是否關於中心對稱算法。

    typedef struct {
        int s[100]; 
        int top;
    } sqstack; 
    int lklistsymmetry(lklist *head){   
        sqstack stack;  
        stack.top= -1; 
        lklist *p;   
        for(p=head;p!=0;p=p->next) {
            stack.top++; 
            stack.s[stack.top]=p->data;
        }   
        for(p=head;p!=0;p=p->next) 
            if (p->data==stack.s[stack.top]) 
                stack.top--; 
            elsereturn 0;   
        return 1; 
    }

設計在鏈式存儲結構上建立一棵二叉樹的算法。

    typedef char datatype; 
    typedef struct node {
        datatype data; 
        struct node *lchild,*rchild;
    } bitree; 
    void createbitree(bitree *&bt) {   
        char ch; 
        scanf("%c",&ch);
        if(ch=='#') {
            bt=0; 
            return;
        } 
        bt=(bitree*)malloc(sizeof(bitree));
        bt->data=ch; 
        createbitree(bt->lchild); 
        createbitree(bt->rchild); 
    
    }
設計判斷一棵二叉樹是否是二叉排序樹的算法。
    int minnum=-32768,flag=1; 
    typedef struct node{
        int key; 
        struct node *lchild,*rchild;
    }bitree; 
    void inorder(bitree *bt) { 
        if (bt!=0){
            inorder(bt->lchild); 
            if(minnum>bt->key)flag=0; 
            minnum=bt->key; 
            inorder(bt->rchild);
        } 
    } 

 


免責聲明!

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



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