資料結構中最簡單的就是線性表。定義為n(n
≥0)n(n\geq0)
n(n≥0)
個資料元素的乙個有限的序列。記為:
l =(
a1,.
..,a
i,ai
+1,.
..,a
n)l = (a_1, ..., a_i, a_, ..., a_n)
l=(a1
,...
,ai
,ai+
1,.
..,a
n),其中 a
1a_1
a1為表頭,a
na_n
an為表尾。
線性表的儲存表示有兩種:順序儲存方式(順序表)和鍊錶儲存方式。
順序表是線性表基於陣列的儲存表示。
定義:把線性表中所有表項按照其邏輯順序以此儲存到從計算機儲存中指定儲存位置開始的一塊連續的儲存空間中。
特點:(1)在順序表中,各個表項的邏輯順序與其存放的物理順序一致,即第i個表項儲存於第i個物理位置。(2)對順序表中所有表項,既可以進行順序訪問也可以進行隨機訪問。
假設順序表a的起始儲存位置為 loc
(1)loc(1)
loc(1)
,第i個表項的儲存位置為 loc
(i)loc(i)
loc(i)
,則有:
l oc
(i)=
loc(
1)+(
i−1)
×siz
eof(
t)loc(i) = loc(1) + (i-1) \times sizeof(t)
loc(i)
=loc
(1)+
(i−1
)×si
zeof
(t)搜尋和定位操作
插入與刪除操作
鍊錶是線性表基於鏈結方式的儲存表示。
單鏈表是最簡單的一種鍊錶表示,也叫作線性鍊錶。用它表示線性表時,通過指標表示結點間的邏輯關係。
因此單鏈表中的乙個儲存結點包含兩個部分:data(資料域)+ link(指標域)。
鍊錶的第乙個結點的位址可通過鍊錶的頭指標找到,鍊錶的最後乙個結點沒有後繼,link域中存放乙個空指標null。所以對單鏈表中任一結點的訪問必須首先根據頭指標找到第乙個結點,再按指標順序往下找。
通常使用兩個類(鍊錶的結點類和鍊錶類)協同表示單鏈表。
常用的是用struct定義linknode類。
struct linknode
;class
list
;
插入有三種情況
刪除有兩種情況
為實現方便,增加乙個「附加頭結點」,它的data域中可以不儲存任何資訊,也可以存放乙個特殊標誌或表長。
而在帶附加頭結點的單鏈表中刪除時,可以統一使用:
del = current-
>link; current-
>link = del-
>link;
delete del;
類定義、鍊錶長度、搜尋、定位、取值、賦值、插入、刪除、建立單鏈表(頭插法、尾插法)
鍊錶的尾結點的link域中不是null,而是存放乙個指向鍊錶開始結點的指標。
著名問題:約瑟夫問題
雙向鍊錶中每個結點都有兩個鏈指標,乙個指向結點的直接前驅,乙個指向結點的直接後繼。
資料結構 第二章 線性表
線性表 是具有相同型別的n n 0 個元素的有限序列,其中n為表長,當n 0時,該錶為空表。線性表的特點 線性表的九種基本操作 initlist l 初始化表。構造乙個空的線性表。destroylist l 銷毀操作。銷毀線性表,並釋放線性表l所占用的記憶體空間。locateelem l,e 按值查...
資料結構 第二章 線性表
線性表 順序儲存 鏈式儲存 順序表單鍊錶 雙鏈表迴圈鍊錶 靜態鍊錶 陣列指標實現 借助陣列實現 定義 線性表是具有相同資料型別的n n 0 個資料元素的有限序列,其中n為表長,當n 0時該線性表是乙個空表。特點 1 個數有限 2 表中元素具有邏輯上的順序性。3 表中元素都是資料元素,每個元素都是單個...
資料結構 第二章 線性表
資料結構 第二章 線性表 模板 引數化的多型 引數化多型性 講程式所處理的物件型別引數化,使一段 可用於處理多種不同型別的物件 採用模板程式設計 提供 共享機制 邏輯功能相同,資料型別不同 定義格式 template 尖括號內又稱模板形參表 返回值型別 函式名 參數列 如果變數被引數化,則返回值型別...