邏輯結構分為集合結構、線性結構、樹形結構和圖形結構四大類。
物理結構分為順序儲存結構和鏈式儲存結構
順序儲存方式
a、儲存空間的起始位置:陣列data,它的儲存位置就是儲存空間的儲存位置。
b、線性表的最大儲存容量:陣列長度maxsize.
c、線性表的當前長度:length。
3.資料長度與線性表長度的區別
a、陣列長度:陣列的長度是存放線性表的儲存空間的長度儲存分配後這個量是一般是不變的。
b、線性表長度:線性表長度是線性表中資料元素的個數,隨著線性表插入和刪除操作的進行,這個量是變化的。
在任意時刻,線性表的長度應該小於等於陣列的長度。
順序儲存結構的插入與刪除
獲得元素操作:使用getelem操作。
插入操作
插入演算法的思路:
a、如果插入位置不合理,丟擲異常。
b、如果線性表長度大於等於陣列長度,則丟擲異常或動態增加容量。
c、從最後乙個元素開始向前遍歷到第i個元素,分別將他們都向後移動乙個位置。
d、將要插入的元素填入位置i處。
e、表長加1.
3、刪除操作
刪除演算法的思路:
a、如果刪除位置不合理,丟擲異常。
b、取出刪除元素。
c、從刪除元素位置開始遍歷到最後乙個元素位置,分別將他們都向前移動乙個位置。
d、表長減1。
4、線性表順序儲存結構的優缺點
優點:a、無須為表示表中元素之間的邏輯關係而增加額外的儲存空間。
b、可以快速地訪問表中任一位置的元素。
缺點:a、插入和刪除操作需要移動大量元素。
b、當線性表長度變化較大時,難以確定儲存空間的容量。
c、造成儲存空間的「碎片」。
四.線性表的鏈式儲存結構
線性表鏈式儲存結構定義
為了表示每個資料元素a與其直接後繼資料元素之間的邏輯關係,對資料元素a來說,除了儲存其本身的資訊之外,還需儲存乙個指示其後繼的資訊(即直接後繼的儲存位置)。我們把儲存資料元素資訊的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱作指標或鏈。這兩部分資訊組成資料元素a的儲存映像,稱為結點。
n個結點(a的儲存映像)鏈結成乙個鍊錶,即為線性表的鏈式儲存結構,因為此鍊錶的每個結點中只包含乙個指標域,所以叫做單鏈表
2、頭指標與頭結點的異同
頭指標:
a、頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。
b、頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字。
c、無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。
頭結點:
a、頭結點是為了操作的統一和方便而設立的,放在第一元素的結點之前,其資料域一般無意義(也可存放鍊錶的長度)。
b、有了頭結點,對在第一元素結點前插入結點和刪除第一結點,其操作與其他結點的操作就同一了。
c、頭結點不一定是鍊錶必須元素。
3、單鏈表的讀取
獲得鍊錶第i個資料的演算法思路:
a、宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始。
b、當jc、若到鍊錶末尾p為空,則說明第i個元素不存在。
d、否則查詢成功,返回結點p的資料。
4、單鏈表的插入與刪除
單鏈表第i個資料插入結點的演算法思路:
a、宣告一結點p指向鍊錶第乙個結點,初始化j從1開始。
b、當jc、若到鍊錶末尾p為空,則說明第i個元素不存在。
d、否則查詢成功,在系統中生成乙個空結點s。
e、將資料元素e賦值給s->data。
f、單鏈表的拆標準語句s->next=p->;p->next=s。
g、返回成功。
單鏈表第i個資料刪除結點的演算法思路:
a、宣告一結點p指向鍊錶第乙個結點,初始化j從1開始。
b、當jc、若到鍊錶末尾p為空,則說明第i個元素不存在。
d、否則查詢成功,將欲刪除的結點p->next賦值給q。
e、單鏈表的刪除標準語句p->next=q->next。
f、將q結點中的資料賦值給e,作為返回。
g、釋放q結點。
h、返回成功。
對於插入和刪除資料越頻繁的操作,單鏈表的效率優勢就越明顯。
六、單鏈表的整表建立
單鏈表整表建立的演算法思路:
a、宣告一結點p和計數器變數i。
b、初始化一空鍊錶l。
c、讓l的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表。
d、迴圈:
*生成一新結點賦值給p。
*隨機生成一數字賦值給p的資料域p->data。
*將p插入到頭結點與前一結點之間。
七、單鏈表的整表刪除
單鏈表整表刪除的演算法思路如下:
a、宣告一結點p和q。
b、將第乙個結點賦值給p。
c、迴圈:
* 將下一結點賦值給q。
*釋放p。
*將q賦值給p。
八、單鏈表結構與順序儲存結構優缺點
1、單鏈表結構和順序儲存結構對比:
a、儲存分配方式:
順序儲存結構用一段連續的儲存單元依次儲存線性表的資料元素。
單鏈表採用鏈式儲存結構,用一組任意的儲存結構單元存放線性表的元素。
b、時間效能:
查詢:順序儲存結構o(1),單鏈表o(n)。
c、空間效能:順序儲存結構需要預分配儲存空間,分大了,浪費,分小了易發生上溢。單鏈表不需要分配儲存空間,只要有就可以分配,元素個數也不受限制。
2、結論
若線性表需要頻繁查詢,很少進行插入和刪除操作時,宜採用順序儲存結構。若需要頻繁插入和刪除時,宜採用單鏈表結構。
當線性表中的元素個數變化較大或者根本不知道有多大時,最好用單鏈表結構,這樣可以不需要考慮儲存空間的大小問題,如果知道大致長度,宜採用順序儲存結構。
九、迴圈鍊錶
將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶。
十、雙向鍊錶
雙向鍊錶是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域。
mysql 線性表 資料結構之線性表
概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...
資料結構之線性表
從現在開始,我們開始討論如何實現一些常用的資料結構和其中的一些經典演算法.等把資料結構講完了.我可能會繼續討論vc 的程式設計只是以及vs平台下的c c 開發等等.呵呵.我們進入正題吧.我在這裡就只實現線性表的連表結構.當然了,這裡實際上包含了好多知識.我希望大家在引用的時候.一定要領悟裡面的一些變...
資料結構之線性表
線性表是具有相同特性的資料元素的乙個有限序列。該序列中所含元素的個數叫做線性表的長度,用n表示,n 0。當n 0時,表示線性表是乙個空表,即表中不包含任何元素。設序列中第i i表示位序 個元素為ai 1 i n 線性表的一般表示為 a1,a2,ai,ai 1,an include include d...