線性表
順序儲存
鏈式儲存
順序表單鍊錶
雙鏈表迴圈鍊錶
靜態鍊錶
陣列指標實現
借助陣列實現
定義:
線性表是具有相同資料型別的n(n>=0)個資料元素的有限序列,其中n為表長,當n=0時該線性表是乙個空表。
特點:
1)個數有限
2)表中元素具有邏輯上的順序性。
3)表中元素都是資料元素,每個元素都是單個元素
4)表中元素的資料型別都相同
5)表中元素具有抽象性(僅考慮間的邏輯關係)
注:線性表邏輯結構,順序表和煉表是指儲存結構。
定義:線性表的順序儲存
特點:表中元素的邏輯順序與其物理順序相同。
單鏈表定義:線性表的鏈式儲存(單向,有去無回)
優點:解決順序表需要大量連續儲存空間的缺點。
缺點:附加指標域,浪費儲存空間。查詢浪費時間。
雙鏈表:雙向,可去可回
優點,因為可返回查詢前驅,插入、刪除結點時間複雜度僅為o(1),
迴圈鏈單鏈表
單鏈表+尾指頭
迴圈雙鏈表
雙鏈表+頭尾互指
就是用陣列表示鍊錶。struct 內兩個元素,乙個儲存資料元素,乙個儲存下乙個元素的陣列下標。以next==-1表示結束標誌。
1.訪問方式
順序表可以順序儲存,也可以隨機儲存。
鍊錶只能從表頭順序訪問元素
2.邏輯結構與物理結構
順序儲存,邏輯上相鄰的其對應的物理儲存位置也能相鄰。
鏈式儲存,邏輯上相鄰的元素,物理位置不一定相鄰。
3.查詢、刪除和刪除操作
順序錶鏈表
查詢按值查詢
無序o(n)
o(n)
有序o(log2n)
o(n)
按序號查詢
o(1)
o(n)
刪除、插入
平均移動半個表長的元素
只修改相關的結點的指標域。(但儲存空間代價大)
4.空間分配
順序儲存
在靜態儲存分配情況下,儲存空間裝滿不能擴充,預先分配過大會有大量閒置,分配過小會造成溢位
在動態儲存分配雖然儲存空間可以擴充,但需要移動大量元素,操作效率低,而且若沒有連續的大塊儲存空間,會導致分配失敗。
鍊錶的結點空間只在需要時申請分配,操作靈活高效。
演算法題倒都不是很難,看看,接受一下思想就可以,有個別的想法還是挺巧妙的,但是不難理解。
資料結構 第二章 線性表
線性表 是具有相同型別的n n 0 個元素的有限序列,其中n為表長,當n 0時,該錶為空表。線性表的特點 線性表的九種基本操作 initlist l 初始化表。構造乙個空的線性表。destroylist l 銷毀操作。銷毀線性表,並釋放線性表l所占用的記憶體空間。locateelem l,e 按值查...
資料結構 第二章 線性表
資料結構 第二章 線性表 模板 引數化的多型 引數化多型性 講程式所處理的物件型別引數化,使一段 可用於處理多種不同型別的物件 採用模板程式設計 提供 共享機制 邏輯功能相同,資料型別不同 定義格式 template 尖括號內又稱模板形參表 返回值型別 函式名 參數列 如果變數被引數化,則返回值型別...
資料結構第二章 線性表
線性表的定義 線性表是具有相同特性的資料元素的乙個有限序列。線性表的特性 1 有窮性 乙個線性表中的元素個數是有限的。2 一致性 乙個線性表中的所有元素的性質相同。從實現的角度看,所有元素具有相同的資料型別。3 序列性 線性表的順序儲存結構 線性表的順序儲存結構簡稱為順序表。順序表的基本運算 1 初...