資料結構與演算法入門(1)
一、資料結構
資料之間相互存在的一種或多種特定的關係的元素的集合。
邏輯結構
資料物件中資料元素之間的相互關係
1.集合結構
在資料結構中,如果不考慮資料元素之間的關係,這種結構稱為集合結構。
各個元素是平等的,共同屬性是屬於同一個集合
2.線性結構
線性結構中的資料元素之間存在一個對應一個的關係,除了第一個資料元素沒有前驅,最後一個元素沒有後繼,其他元素都有唯一的前驅和後繼。
3.樹形結構
樹狀結構中的資料元素之間存在著一個對應多個的關係。資料元素之間存在著層次關係,除了一個特殊的稱為樹根的元素無前驅,其他資料元素都有唯一前驅。
4.圖形結構
圖狀結構中的資料元素之間存在多個對應多個的關係,也就是任一資料元素可能有多個前驅和後繼。
物理結構(儲存結構)
1.順序儲存結構(特徵:美女來插隊)
2.鏈式儲存結構(對不起,我是警察,排隊)
抽象資料結構
資料型別:一組性質相同的值的集合及定義在此集合上的一些操作的總稱
抽象資料型別:一個數字模型及定義在該模型上的一組操作
二、線性表
a1是a2的前驅,ai+1 是ai的後繼,a1沒有前驅,an沒有後繼
n
n為線性表的長度 ,若n==0時,線性表為空表
順序儲存方式線性表
儲存位置連續,可以很方便計算各個元素的地址
如每個元素佔C個儲存單元,那麼有:
Loc(An) = Loc(An-1) + C,於是有:
Loc(An) = Loc(A1)+(i-1)*C;
優點:查詢快
缺點:插入、刪除效率慢
鏈式儲存方式線性表
線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以是連續的,也可以是不連續的
為了表示每個資料元素Ai與其直接後繼資料元素Ai+1之間的邏輯關係,對資料元素Ai來說,除了儲存其本身的資訊之外,還需儲存一個指示其直接後繼的資訊
優:刪除還插入效率高
缺:查詢效率低
迴圈連結串列
將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成一個環,這種頭尾相連的單鏈表稱為單迴圈連結串列,簡稱迴圈連結串列
雙向迴圈連結串列
雙向迴圈連結串列是單向迴圈連結串列的每個結點中,再設定一個指向其前驅結點的指標域