資料結構初識

嗨,阿良發表於2020-07-15

資料結構

一、資料結構是計算機儲存、組織資料的方式

二、資料結構是指相互之間存在一種或多種特定關係的資料元素的集合

注: 精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法索引技術有關

研究物件

一、資料的邏輯結構

指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後間關係,而與他們在計算機中的儲存位置無關。邏輯結構包括:

1.集合:資料結構中的元素之間除了“同屬一個集合” 的相互關係外,別無其他關係;

2.線性結構:資料結構中的元素存在一對一的相互關係;

3.樹形結構:資料結構中的元素存在一對多的相互關係;

4.圖形結構:資料結構中的元素存在多對多的相互關係。

二、資料的物理結構

指資料的邏輯結構在計算機儲存空間的存放形式。

資料的物理結構是資料結構在計算機中的表示(又稱映像),它包括資料元素的機內表示和關係的機內表示。由於具體實現的方法有順序、連結、索引、雜湊等多種,所以,一種資料結構可表示成一種或多種儲存結構。

資料元素的機內表示(映像方法): 用二進位制位(bit)的位串表示資料元素。通常稱這種位串為節點(node)。當資料元素有若干個資料項組成時,位串中與各個資料項對應的子位串稱為資料域(data field)。因此,節點是資料元素的機內表示(或機內映像)。

關係的機內表示(映像方法):資料元素之間的關係的機內表示可以分為順序映像和非順序映像,常用兩種儲存結構:順序儲存結構和鏈式儲存結構。順序映像藉助元素在儲存器中的相對位置來表示資料元素之間的邏輯關係。非順序映像藉助指示元素儲存位置的指標(pointer)來表示資料元素之間的邏輯關係。

三、資料儲存結構

資料的邏輯結構在計算機儲存空間中的存放形式稱為資料的物理結構(也稱為儲存結構)。一般來說,一種資料結構的邏輯結構根據需要可以表示成多種儲存結構,常用的儲存結構有順序儲存、鏈式儲存、索引儲存和雜湊儲存等。

資料的順序儲存結構的特點是:藉助元素在儲存器中的相對位置來表示資料元素之間的邏輯關係;非順序儲存的特點是:藉助指示元素儲存地址的指標表示資料元素之間的邏輯關係。

分類

資料結構有很多種,一般來說,按照資料的邏輯結構對其進行簡單的分類,包括線性結構和非線性結構兩類。

一、線性結構

簡單地說,線性結構就是表中各個結點具有線性關係。如果從資料結構的語言來描述,線性結構應該包括如下幾點:

1、線性結構是非空集。

2、線性結構有且僅有一個開始結點和一個終端結點。

3、線性結構所有結點都最多隻有一個直接前趨結點和一個直接後繼結點。

4、線性表就是典型的線性結構,還有棧、佇列和串等都屬於線性結構。

二、非線性結構

簡單地說,非線性結構就是表中各個結點之間具有多個對應關係。如果從資料結構的語言來描述,非線性結構應該包括如下幾點:

1、非線性結構是非空集。

2、非線性結構的一個結點可能有多個直接前趨結點多個直接後繼結點

在實際應用中,陣列、廣義表、樹結構和圖結構等資料結構都屬於非線性結構。

常用的資料結構

電腦科學的發展過程中,資料結構也隨之發展。程式設計中常用的資料結構包括如下幾個。

一、陣列(Array)

陣列是一種聚合資料型別,它是將具有相同型別的若干變數有序地組織在一起的集合。陣列可以說是最基本的資料結構,在各種程式語言中都有對應。一個陣列可以分解為多個陣列元素,按照資料元素的型別,陣列可以分為整型陣列、字元型陣列、浮點型陣列、指標陣列和結構陣列等。陣列還可以有一維、二維以及多維等表現形式。

二、棧( Stack)

是一種特殊的線性表,它只能在一個表的一個固定端進行資料結點的插入和刪除操作。棧按照後進先出的原則來儲存資料,也就是說,先插入的資料將被壓入棧底,最後插入的資料在棧頂,讀出資料時,從棧頂開始逐個讀出。棧在組合語言程式中,經常用於重要資料的現場保護。棧中沒有資料時,稱為空棧。

三、佇列(Queue)

佇列和棧類似,也是一種特殊的線性表。和棧不同的是,佇列只允許在表的一端進行插入操作,而在另一端進行刪除操作。一般來說,進行插入操作的一端稱為隊尾,進行刪除操作的一端稱為隊頭。佇列中沒有元素時,稱為空佇列。

四、連結串列( Linked List)

連結串列是一種資料元素按照鏈式儲存結構進行儲存的資料結構,這種儲存結構具有在物理上存在非連續的特點。連結串列由一系列資料結點構成,每個資料結點包括資料域和指標域兩部分。其中,指標域儲存了資料結構中下一個元素存放的地址。連結串列結構中資料元素的邏輯順序是通過連結串列中的指標連結次序來實現的。

五、樹( Tree)

是典型的非線性結構,它是包括,2個結點的有窮集合K。在樹結構中,有且僅有一個根結點,該結點沒有前驅結點。在樹結構中的其他結點都有且僅有一個前驅結點,而且可以有兩個後繼結點,m≥0。

六、樹( Tree)

是另一種非線性資料結構。在圖結構中,資料結點一般稱為頂點,而邊是頂點的有序偶對。如果兩個頂點之間存在一條邊,那麼就表示這兩個頂點具有相鄰關係。

七、堆(Heap)

是一種特殊的樹形資料結構,一般討論的堆都是二叉堆。堆的特點是根結點的值是所有結點中最小的或者最大的,並且根結點的兩個子樹也是一個堆結構。

八、雜湊表(Hash)

雜湊表源自於雜湊函式(Hash function),其思想是如果在結構中存在關鍵字和T相等的記錄,那麼必定在F(T)的儲存位置可以找到該記錄,這樣就可以不用進行比較操作而直接取得所查記錄。

常用演算法

資料結構研究的內容:就是如何按一定的邏輯結構,把資料組織起來,並選擇適當的儲存表示方法把邏輯結構組織好的資料儲存到計算機的儲存器裡。演算法研究的目的是為了更有效的處理資料,提高資料運算效率。資料的運算是定義在資料的邏輯結構上,但運算的具體實現要在儲存結構上進行。一般有以下幾種常用運算: [3]

(1)檢索。檢索就是在資料結構裡查詢滿足一定條件的節點。一般是給定一個某欄位的值,找具有該欄位值的節點

(2)插入。往資料結構中增加新的節點

(3)刪除。把指定的結點從資料結構中去掉

(4)更新。改變指定節點的一個或多個欄位的值

(5)排序。把節點按某種指定的順序重新排列。例如遞增或遞減

相關文章