數據結構 試題

前言

這里是 數據結構 系列文章,主要介紹計算機二級考試中的涉及到數據結構的知識點 /
數據結構在計算機科學中處處都有存在,例如編譯系統要使用棧、散列表、語法樹等;操作系統要使用隊列、存儲管理表、目錄樹等等。

關于作者:

轉載請注明出處


題目

  1. 在單鏈表中,增加頭結點的目的是

    • 方便運算的實現
    • 使單鏈表中至少有一個節點
    • 表示表節點中首節點的位置
    • 說明單鏈表是線性表的鏈式存儲實現
  2. 算法分析的目的是

    • 找出數據結構的合理性
    • 找出算法中輸入和輸出之間的關系
    • 分析算法的易懂性和可靠性
    • 分析算法的效率以求改進
  3. 對于長度為n的線性表,在最壞情況下,各排序算法所對應的比較次數中正確的是

    • 冒泡排序為n/2
    • 冒泡排序為n
    • 快速排序為n
    • 快速排序為n(n-1)/2
  4. 已知數據表A中每個元素距離其最終位置不遠,為節省時間,應采用的算法是

    • 堆排序
    • 直接插入排序
    • 快速排序
    • 直接選擇排序
  5. 下列關于棧的描述中,錯誤的是

    • 棧是先進后出的線性表
    • 棧只能順序存儲
    • 棧具有記憶功能
    • 對棧的插入與刪除操作中,不需要改變棧底指針
  6. 試述二叉樹中前序遍歷,中序遍歷,后序遍歷的順序

解析

  1. 頭節點不僅表示了表中首節點的位置,而且根據單鏈表(包含頭節點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭節點目的是為了便于運算的實現。

  2. 算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應的數量級,常用時間復雜度和空間復雜度表示。分析算法的目的就是要降低算法的時間復雜度和空間復雜度,提高算法的執行效率。

  3. 假設線性表的長度為n,則在最壞情況下,冒泡排序需要經過n/2遍的從前往后和n/2遍的從后往前掃描,需要比較次數為n(n-1)/2。快速排序的最壞情況比較次數也是n(n-1)/2。

  4. 當數據表中每個元素距離其最終位置不遠,意味著數據表中元素基本有序,在待排序序列基本有序的情況下,采用插入排序所用時間最少。

  5. 棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作,允許插入和刪除的一端稱為棧頂,另一端稱為棧底。一個新元素只能從棧頂一端進入,刪除時,只能刪除棧頂的元素,即剛剛被插入的元素。所以棧又被稱為先進后出表(FILO-First In LastOut)。線性表可以順序存儲,也可以鏈式存儲,棧是線性表,因此也可以采用鏈式存儲結構。

  6. 根據先左后右的原則下,根據訪問根結點的次序,二叉樹的遍歷分為3種:前序遍歷、中序遍歷和后序遍歷。
    • 前序遍歷指,先訪問根結點,再遍歷左子樹,最后遍歷右子數,并且在遍歷左、右子樹的時候,仍然按先訪問根結點,再遍歷左子樹,最后遍歷右子數的順序。
    • 中序遍歷指,先遍歷左子樹,再訪問根結點,最后遍歷右子數,并且在遍歷左、右子樹的時候,仍然按先遍歷左子樹,再訪問根結點,最后遍歷右子數的順序。
    • 后序遍歷指,先遍歷左子樹,再遍歷右子數,最后訪問根結點,并且在遍歷左、右子樹的時候,仍然是按先遍歷左子樹,再遍歷右子樹,最后訪問根結點的順序。

圖表復盤

題目數量錯誤數量錯誤率
20630%

涉及知識點出現次數占比
鏈表114%
算法分析114%
排序算法342%
114%
二叉樹114%

精度自小數點后兩位

小結

目前來看,排序算法頻率較為突出,占比最大,其他例如鏈表、棧也各占14%,二叉樹雖只有14%,但涉及到的點確實更為復雜,考了前中后序遍歷。
但也不排除有樣本數量過少,分析不夠準確的點