數據結構簡答題


第一章 緒論

1、數據結構是一門研究什么的學科?

數據結構是一門研究非數值計算程序設計問題中,計算機操作對象對象間的關系施加於對象的操作等的學科。

2、數據存儲結構有哪幾種類型?

存儲結構可分為順序存儲鏈式存儲索引存儲散列存儲

3、數據邏輯結構包括哪幾種類型?

邏輯結構包括線性結構非線性結構。更細分的話可以說,邏輯結構包括集合線性結構(線性表、棧、隊列等)、樹形結構網狀結構

4、數據結構與數據類型有什么區別?
答:數據結構這一術語有兩種含義,一是作為一門課的名稱,二是作為一個科學的概念,目前尚無公認定義,一般認為,數據結構包括三個方面數據的邏輯結構,數據的存儲結構,數據的運算。而數據類型是值的集合操作的集合,可以看做是已實現了的數據結構,后者是前者的一種簡化情況。


5、數據類型和抽象數據類型是如何定義的?二者有何相同和不同之處?抽象數據類型的主要特點是什么?使用抽象數據類型的主要好處是什么?數據類型和抽象數據類型是如何定義的?二者有何相同和不同之處?抽象數據類型的主要特點是什么?使用抽象數據類型的主要好處是什么?

答:數據類型是程序設計語言中的一個概念,數據類型是值的集合操作的集合,可以看做是已實現了的數據結構

抽象數據類型指一個數學模型定義在該模型上的一組操作。抽象的意義在於數據類型的數學抽象特性。抽象數據類型的定義僅取決於它的邏輯特性,而與其在計算機內部如何表示與實現無關。無論其內部如何變化。只要它的數學特性不變就不影響它的外部使用。抽象數據類型和數據類型實質上是一個概念,但是抽象數據類型的范圍更廣,它已不再局限於機器已定義和實現的數據類型,還包括用戶在設計軟件系統時自行定義的數據類型。使用抽象數據類型定義的軟件模塊含定義表示實現三部分,封裝在一起,對用戶透明(提供接口),而不必了解實現細節。

6、名詞解釋

數據:是對 客觀事物符號表示,在計算機科學中指所有能輸入到計算機並能被計算機程序處理的 符號總稱
數據元素:是數據的 基本單位。在計算機科學中通常作為一個整體進行考慮和處理
數據對象:是 性質相同的數據元素的 集合,是數據的一個子集
數據結構:是相關之間存在一種或多種 特定關系數據元素集合
存儲結構:數據結構在 計算機中的表示
數據類型:是一個值的集合和定義在這個值集上一組操作的總稱,是 值的集合和操作的集合
抽象數據類型:是指一個數學模型,以及定義在該模型上的一組操作


7、算法的時間復雜度
答:算法時間復雜度用來度量算法執行時間的多少,用大O階表示,即T(n)=O(f(n)),其中n為問題規模,也就是問題的大小

8、算法的五個重要特性

有窮性確定性可行性輸入輸出

9、評價算法好壞的依據

正確性可讀性健壯性高效率低存儲需求

 

第二章 線性表

1、對順序存儲結構和鏈式存儲結構,比較它們的優缺點。在什么情況下用順序表比鏈表好?

1)順序存儲時,相鄰數據元素的存放地址相鄰(邏輯與物理統一),內存中可用存儲單元的地址也連續。
優點:存儲密度大,存儲空間利用率高。缺點:插入刪除需要移動元素。
2)鏈式存儲時,相鄰元素隨意存放,存儲空間由結點值和指針兩部分組成。
優點:插入刪除方便。缺點:存儲利用率低。
在線性表長度變化不大,主要操作是查找時,采用順序表。
在線性表長度變化較大,插入刪除操作時,采用鏈表。

2、試舉一例說明對相同的邏輯結構,同一種運算在不同的存儲方式下實現,其運算效率不同。
答:線性表的插入刪除操作。在順序存儲方式下平均移動一半元素,時間復雜度為O(n),在鏈式存儲方式下,插入和刪除的時間復雜度都是O(1)。

3、說明頭指針、頭節點、首元結點的概念

頭指針是指向鏈表中第一個結點(或頭節點或首元結點)的指針。
頭節點是在鏈表的首元結點之前附加的一個結點,頭結點是為了操作的統一方便而設立的。數據域一般無意義,只放空表標志和表長等信息。

首元素結點是指鏈表中存儲線性表中第一個元素結點

3、簡述順序存儲隊列假溢出的避免方法及隊滿和空的條件。
答:避免方法:一是將隊列元素向前“平移”(占用0至rear -front 1);二是將隊列看成首尾相連,即看做循環隊列(0...m-1)。
在循環隊列下,定義front=rear時為隊空,而判斷隊滿則常用兩種方法:一種是用 “犧牲一個單元” ,即rear+1=front (准確說是(rear+1) %m= =front 時,m是隊列容量)時為隊滿:另一種方法是 “設標記”,如設標記tag, tag=0時為隊空: tag=1時,若因插人導致front=rear 則為隊滿。

第三章 棧和隊列

1、棧、隊列的名詞解釋。兩者之間的聯系與區別。
棧是只允許在一端進行插入和刪除操作的線性表,允許插入和刪除的端叫棧頂,另一端叫棧底。最后插入的元素最先刪除,故棧也稱后進先出表
隊列是允許在一端插入而在另一端刪除的線性表,允許插入的一端叫隊尾, 允許刪除的端叫隊頭。最先插入隊的元素最先離開(刪除),故隊列也常稱先進先出表
棧與隊列都是操作受限的線性表,只允許在端點插入刪除。都可通過順序結構和鏈式結構實現。插入刪除時間復雜度都為O(1)。
棧只允許在棧頂插入刪除,隊列在隊頭刪除隊尾插入。

2、棧和隊列的應用有?

棧:表達式的轉換和求值、函數調用和遞歸實現、深度優先搜索遍歷

隊列:計算機系統中各種資源的管理、消息緩沖器的管理、廣度優先搜索遍歷

2、什么是遞歸程序?

一個函數在結束本函數前,直接或間接調用函數自身,稱為遞歸。

遞歸程序的優點是程序結構簡單、清晰,易證明其正確性。缺點是執行中占內存空間較多,運行效率低。

遞歸程序執行中需要借助棧這種數據結構來實現。

遞歸程序的入口語句和出口語句一般用條件判斷語句來實現。遞歸程序有基本項和歸納項組成。

第四章 串

1、什么是串?

串是零個至多個字符組成的有限序列。從數據結構角度講,串屬於線性結構。與線性表的特殊性在於串的元素是字符。

2、描述一下概念的區別:空格串和空串

空格是一個字符,其ASCII碼值是32。空格串是用空格組成的串,其長度等於空格的個數。

空串是不含任何字符的串,即空串的長度是零。

第五章 數組和廣義表

1、什么是廣義表?廣義表與線性表的區別

線性表中的元素可以是各種各樣的,但必須具有相同的性質,屬於同一數據對象。

廣義表中的元素可以是元素也可以是子表。

2、試敘述一維數組和有序表的異同

一維數組屬於特殊的順序表,和有序表的差別主要在於有序表中的元素按值排序(非遞增或非遞減),而一維數組中元素沒有按元素值排列順序的要求。

第六章 樹與二叉樹

1、樹與二叉樹的區別和聯系?

樹與二叉樹是兩種不同的數據結構,在邏輯上都是樹形結構,區別主要有:

一是二叉樹的度至多為2,樹無此限制;

二是二叉樹有左右子樹之分,即使在只有一個分枝的情況下,也必須指出是左子樹還有右子樹,樹無此限制;

三是二叉樹允許為空,樹一般不允許為空。

第七章 圖

1、完全圖

也叫簡單完全圖,假設一個圖有n個頂點,那么如果任意兩個頂點之間都有邊的話,該圖就稱為完全圖。

2、連通、連通分量、強連通分量的概念,極大連通子圖?極小連通子圖?
無向圖中,若從頂點v到頂點w有路徑存在,則稱v和w是連通的。圖中任意兩點是連通的,則稱圖G為連通圖。無向圖中的極大連通子圖稱為連通分量
有向圖中,若v到w和w到v都有路徑存在,則稱這兩個點是強連通的。任一對頂點都是強連通的,則此圖為強連通圖。有向圖中的極大強連通子圖稱為有向圖的強連通分量

極大是要求該連通子圖包含其所有的邊(暗指無向圖),亦為連通分量。

極小是在保持連通的情況下使邊數最少的子圖(暗指無向圖),亦為最小生成樹。

3、對一個圖進行遍歷可以獲得不同的遍歷序列,那么導致得到不同遍歷序列不唯一的因素有哪些?

遍歷不唯一的因素有:開始遍歷的結點不同;存儲結構不同;在鄰接表情況下鄰接點的順序不同。

4、在什么情況下,Prim算法和Kruskual算法生成不同的最小生成樹MST?

有相同權值邊時生成不同的MST,在這種情況下,用Prim算法或Kruskual算法會產生不同的MST。

6、Prim算法和Kruskual算法區別

Prim算法是加點法,適合邊稠密圖;Kruskual算法是一種按權值的遞增次序選擇合適邊來構造生成樹的加邊法,適合邊稀疏而頂點較多的圖。

 

第八章 查找

1、散列表存儲的基本思想是什么?

散列表的基本思想是用關鍵字決定數據元素的存儲地址

2、散列表存儲中解決碰撞的基本方法有哪些?

a、開放定址法 根據di的取值又分為線性探測再散列二次探測再散列偽隨機探測再散列

b、再散列法

c、鏈地址法

d、建立公共溢出區

3、如何衡量hash函數的優劣?

能否將關鍵字均勻映射到哈希空間上,有無好的解決沖突的方法,計算哈希函數是否簡單高效。由於哈希函數是壓縮映像,沖突難以避免。

4、在查找算法中,設置監視哨的作用是什么?

監視哨的作用是免去查找過程中每次都要檢測整個表是否查找完畢,提高了查找效率。
5、對於一個有序順序表來說,折半查找是否任何時候比順序查找快?為什么?
答:並非在任何情況下折半查找都比順序查找快。例如,若待查元素是該順序表的第一個元素,則順序查找順序表會更快。對有序順序表采用順序查找,若元素存在表中,則在任一位置,查找都可能成功。同樣,若元素不在表中,則在任一位置, 查找都可能結束。折半查找必須經一-系列計算,方知查找成功還是失敗。盡管如此,一般說來,在大多數情況下,折半查找還是比順序查找快。

第九章 內部排序

1、排序穩定性的概念
假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,則稱這種排序算法是穩定的。

2、穩定排序有哪些?不穩定排序有哪些?

穩定排序:直接插入排序、冒泡排序、歸並排序、基數排序

不穩定排序:選擇排序、希爾排序、快速排序、堆排序

3、快速排序是在所有情況下,排序速度最快的嗎?為什么?

不是,因為當序列已有序時,快速排序退化成了冒泡排序,時間復雜度為O(n2)。

當待排序列無序,使每次划分完成后,樞軸(pivot)兩側子文件長度相當,此時快速排序性能最好。

4、

比較次數 與序列初態 無關 的算法是:二路歸並排序、簡單選擇排序、基數排序
比較次數 與序列初態 有關 的算法是:快速排序、直接插入排序、冒泡排序、堆排序、希爾排序

5、簡述堆的結構

堆是一種特殊的完全二叉樹所有父結點都比子結點要小的完全二叉樹我們稱為最小堆。反之,如果所有父結點都比子結點要大,這樣的完全二叉樹稱為最大堆

第十章 文件

1、文件是由大量性質相同的記錄組成的集合、按記錄類型不同分為操作系統文件數據庫文件

2、文件存儲結構的基本形式有哪些?

文件基本組織方式有順序組織索引組織散列組織鏈組織

文件的存儲結構可以采用將基本組織結合的方法,常用的結構有順序結構、索引結構、散列結構。


免責聲明!

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



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