這是乙個學習筆記,也是逐步理解的過程。
希望能一直持續下去吧。
首先了解一下線性表的概念和定義吧,當然還有c++的抽象基類。具體實現留在下一節。
線性表是乙個有限序列,也就是說,線性表存在唯一的第乙個表項和最後乙個表項,其他表項有且僅有乙個直接前驅,(第乙個表項沒有前驅);除最後乙個表項外,其他表項有且僅有乙個直接後繼i(最後乙個表項沒有後繼)。
l = (a1, a2, …,an), l是表名,n是表的長度。
第乙個表項稱為表頭,最後乙個表項稱為表尾。
鄰接關係是1對1的,所有結點按1對1的鄰接關係構成的整體就是線性結構。
概念上允許線性表中各個元素可以有不同的資料型別,但目前學習過程只考慮相同的資料型別。
幾個線性表的例子:
color = (『red』, orange』, 『yellow』, 『green』, 『blue』, 『black』)
dept = (通訊,計算機,自動化,微電子,建築與城市規劃,生命科學,精密儀器)
score = (667, 664, 659, 659, 657, 654, 653, 652, 651, 650, 650)
線性表中的值與它的位置之間既可以有聯絡,也可以沒有聯絡。有序線性表中的元素按照值的遞增順序排列,而無序線性表則沒有這樣的關係。
// 線性表的抽象資料型別
adt linearlist is
objects:
n(≥0
)個原子表項的乙個有限序列。
function:
create
() 建立乙個空線性表
intlength
() 計算表長度
intsearch
(t& x) 找x在表中的位置,返回表項位置
intlocate
(int i) 返回第i個表項在表中的位置
bool
getdata
(int i,t& x) 取第i個表項的值
bool
setdata
(int i,t& x) 用x修改第i個表項的值
bool
insert
(int i,t& x) 在第i個表項後插入x
bool
remove
(int i,t&x ) 刪除表中第i個表項,通過x返回刪除表項的值
bool
isempty
() 判斷表是否為空
bool
isfull
() 判斷表是否已滿
void
sort
() 對當前表排序
end linearlist
以上運算只是邏輯層面上的定義,只給出了「做什麼」。只有在確定了儲存結構之後,才能實現「如何做」等細節。 資料結構學習筆記 線性表
線性表是零個或多個資料元素的有限序列。線性表的資料物件集合為。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係 線性表的順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。簡單的說...
資料結構學習 線性表
線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...
資料結構學習 線性表
考試前複習下資料結構,把一些知識點整理在這!主要參考了殷人昆主編的 資料結構 用物件導向方法與c 語言描述 這本書,以及中山大學劉聰老師的課件內容!鍊錶雙鏈表 線性表 linear list 是由n n 0 個資料元素 結點 a 0 a 1 a 2 a n 1 組成的有限序列。維基百科 線性表是乙個...