資料結構學習筆記(一)概述

2021-10-01 01:49:20 字數 2728 閱讀 3078

陣列是在記憶體中連續儲存多個相同型別元素的結構,陣列中的元素通過陣列下標進行訪問。

陣列下標從0開始,例如下面這段**就是將陣列的第乙個元素賦值為1。

int data = new int[100];

data[0] = 1;

優點:1、按照索引查詢元素速度快

2、按照索引遍歷陣列方便

缺點:

1、大小固定:陣列大小固定後不能改變

2、資料型別單一:陣列只能儲存一種型別的資料

3、新增與刪除慢:因為要移動其他元素,所以新增,刪除的操作慢。

適用場景:

頻繁查詢,對儲存空間要求不大,很少增加和刪除。

棧是一種特殊的線性表,僅能在棧頂進行操作。從棧頂放入元素叫入棧,取出元素叫出棧。棧的特點:先進後出。

適用場景:

常應用於實現遞迴功能方面的場景,例如斐波那契數列。(斐波那契數列的實現及如何應用可以在我的文章目錄中檢視)

佇列也是一種線性表,不同的是,佇列在一端新增元素,稱為入隊;而在另一端取出元素,稱為出隊。即:先進先出。

如上圖所示,入隊時呼叫rear指標(rear指標始終指向元素的下乙個單元,又或始終指向元素即將入隊的位置),出隊時呼叫front指標(front指標始終指向即將出隊元素)

適用場景:

因為佇列先進先出的特點,在多執行緒阻塞佇列管理中非常適用。(多執行緒阻塞佇列的基本知識可以博主文章列表中查詢)

鍊錶是指物理儲存單元上非連續的、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶的指標位址實現,每個元素包含兩個節點,乙個是鍊錶該單元元素對應記憶體空間,另乙個是指向下乙個節點位址的指標域。根據指標的指向,鍊錶能形成不同的結構,例如單鏈表、雙向鍊錶、迴圈鍊錶等。

優點:

1、容量可改變:鍊錶不需要初始化容量,可以任意加減元素。

2、新增,刪除快:新增、刪除元素時只需要改變前後兩個元素結點的指標與指向位址即可。

缺點:

1、空間占用大:大量的指標域占用很多空間。

2、查詢元素耗時大:查詢元素需要遍歷整個鍊錶,遍歷過程包含很多指標的呼叫,十分耗時。

適用場景:

資料量較小,需要頻繁增加、刪除操作的場景。

樹是由n(n>=1)個有限節點組成的乙個具有層次關係的集合,根朝上葉朝下,它具備以後特點:

雜湊表也叫雜湊表(基於陣列衍生的資料結構),是根據關鍵碼(key)和值(value)直接進行訪問的資料結構,通過key和value來對映到集合中的乙個位置,這樣就可以很快扎到集合中的對應元素。

記錄的儲存位置=f(key)%陣列長度

這裡的對應關係f稱為雜湊函式,又稱為雜湊,而雜湊表就是把key通過雜湊函式轉換為乙個整形數字,然後將該數字對陣列長度進行取餘,取餘結構當作陣列的下標,將value儲存在以該數字為下標的陣列空間裡,這種儲存空間可以充分利用陣列的查詢優勢來查詢元素,所以查詢速度很快。

因為陣列的增加刪除慢,所以雜湊表還需要用到鍊錶,即拉鍊法:新增、刪除元素指的是根據元素的一些特徵把元素分配到不同的鍊錶中去;同時刪除元素也根據元素特徵找到鍊錶再找到元素。如下圖:

圖中,左邊是乙個陣列,陣列的每個成員包括乙個指標,指向乙個鍊錶的頭,該鍊錶可以為空也可以包含很多元素,值得注意的是應用此資料結構需要解決雜湊衝突的問題。(雜湊衝突問題的知識可以在博主文章列表中找到)

堆可以被看做一棵樹的陣列物件,具有以下性質:

堆的分類:(均為完全二叉樹)

最大堆/大根堆:根節點最大的堆

最小堆/小根堆:根節點最小的堆

大頂堆:n個元素的序列,滿足ki >= k2i,ki >= k2i+1

小頂堆:n個元素的序列,滿足ki <= k2i,ki <= k2i+1

適用場景:

因為堆的有序特點,一般用來做陣列中的排序,稱為堆排序。

圖由節點的有窮集合v和邊的集合e組成。為了與樹形結構加以區別,在圖結構中常常將節點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。

圖的分類:

按照頂點指向的方向可以分為有向圖和無向圖:

圖在儲存資料上有著比較複雜和高效的演算法,包括:鄰接矩陣、鄰接表、十字鍊錶、鄰接多重表、邊集陣列等儲存結構。

資料結構學習筆記 一

1 資料結構 眾所周知,電腦程式是對資訊進行的加工處理.在一般情況下,這些資訊並不是沒有組織,資訊之間往往具有重要的結構關係,這就是資料結構的內容.設有乙個 號碼薄,它記錄了n個人的名字和其相應的 號碼,假定按如下形式安排 a1,b1 a2,b2 an,bn 其中ai,bi i 1,2 n 分別表示...

資料結構學習筆記 一

資料結構研究非數值計算的程式設計問題中的操作物件,以及他們之間關係和操作 程式設計 資料結構 演算法 資料結構 資料 資料的構成方式 資料,能夠由計算機操作的物件,能夠由計算機識別,並輸入給計算機處理的符號集合。兩個特徵 可以輸入到計算機中,能被電腦程式處理 資料,資料元素,資料項,資料物件,資料結...

資料結構學習筆記(一)

資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和操作的學科。通常有下列四類基本結構 1 集合 2 線性結構 3 樹形結構 4 圖狀結構或網狀結構 資料結構的形式定義為 data structure d,s 其中d是資料元素的有限集,s是d上關係的有限集。結構定義中的 ...