數據結構-概述
1.1 引言
數據結構指的是數據元素之間的邏輯結構、存儲結構及其數據的抽象運算。既按某種邏輯關系組織的一組數據,再按一定的存儲表示方式把它們存儲在計算機的存儲器中,並在這些數據上定義一個運算的集合,這就叫做一個數據結構。
1.2 基本概念和常用術語
數據:描述客觀事物的數、字符以及能輸入計算機中並被計算機處理的符號的集合。
數據元素:數據的基本單位。由若干數據項(字段、屬性、域)組成。
數據對象:具有相同性質的數據元素的集合,是數據的一個子集。
數據結構:是帶有結構的數據元素的集合。結構指的是數據元素之間的相互關系,即數據的組織形式,結構中的數據元素成為節點。
- 數據的邏輯結構
數據元素之間的邏輯(抽象)關系稱為數據的邏輯結構。
數據的邏輯結構是從邏輯關系上描述數據的,它與數據元素的存儲結構無關,是獨立於計算機的。
線性結構:數據元素之間存在一對一關系,且結構中僅有一個開始節點和一個終端節點,其余節點都是僅有一個直接前趨節點和一個直接后繼節點。
非線性結構:數據元素之間存在着一對多或多對多的關系,即一個節點可能有多個直接前趨和多個直接后繼。
該結構包括樹形結構、圖形結構和網狀結構等。
2. 數據的存儲結構
數據元素及其關系在計算機內的存儲方式,稱為數據的存儲結構(物理結構)。
數據的存儲結構是數據在計算機中的存儲表示(映像),亦稱作數據的物理結構。它包括數據元素和關系的表示,依賴計算機語言。
1. 順序存儲方法:是把邏輯上相鄰的節點存儲在物理位置上也相鄰的連續存儲單元里。
通常是借助於程序設計語言的數組來描述的。
主要應用與線性數據結構,但是非線性數據結構也可通過某種線性化的方法來實現順序存儲。
2. 鏈接存儲方法:是用一組不一定連續的存儲單元存儲邏輯上相鄰的元素,元素間的邏輯關系由附加的指針域表示的。
通常是借助於程序設計語言中的指針來描述的。
3. 索引存儲方法:是在存儲元素信息的同時,還建立附加的索引表。表中的索引項一般形式是:(關鍵字,地址)。
關鍵字是能唯一標識一個元素的一個數據項或多個數據項的組合。
4. 散列存儲方法:基本思想是根據元素的關鍵字,直接計算出來該元素的存儲地址。
- 數據的運算
數據的運算,即對數據元素施加的操作(行為)。
數據的運算時定義在數據的邏輯結構上的,每種邏輯結構都有一個運算的集合。
1.3 算法的描述與分析
算法准則:
1. 輸入
2. 輸出
3. 有窮性
4. 確定性
5. 可行性
算法優劣:
1. 時間復雜性
2. 空間復雜性
3. 可讀性&可操作性
時間復雜度:
常數:O(1)
非常數: O(循環語句)