陣列
是線性表資料結構中順序儲存
的具體實現。用一組連續
的記憶體空間,儲存相同型別
的資料
鍊錶
是線性表資料結構中鏈式儲存的具體實現
。用節點
的指標
把各個節點串聯在一起
根據線性表
順序儲存的資料結構特徵,我們可以知道,陣列的插入、刪除
時間複雜度為o(n)
,因為涉及到資料的搬移操作;陣列的根據下標訪問元素
的時間複雜度為o(1)
,這是連續的記憶體空間
帶來的優勢,根據定址公式
我們可以很容易的找到指定下標的記憶體位址
class
myarray
/** * 判斷陣列是否已滿
*/private
function
full()
/** * 索引是否超出範圍
*/private
function
outofrange
($index
)/**
* 根據索引訪問資料元素
*/public
function
find
($index
)return
$this
->
data
[$index];
}/**
* 在指定索引 index 處插入資料 data
*/public
function
insert
($index
,$data
)for($i
=$this
->
len-1;
$i>=
$index;$i
--)$this
->
data
[$index]=
$data
;$this
->
len++
;return
$index;}
/** * 刪除指定索引的值
*/public
function
delete
($index
)$data
=$this
->
data
[$index];
for($i=
$index;$i
<
$this
->
len-1;
$i++
)// unset 掉移動元素後最後的重複元素
unset
($this
->
data
[$this
->
len-1]
);$this
->
len--
;return
$data;}
}
class
linkedlistnode
}class
linkedlist
/** * 插入節點,預設頭插法 (頭節點後插入)
*/public
function
insert
($value
)catch
(exception$e)
return
true;}
/** * 查詢值等於給定值的節點
*/public
function
getnodebyvalue
($value
)$curnode
=$curnode
->
next;}
return
null;}
/** * 查詢鍊錶的第 index 個節點
*/public
function
getnodebyindex
($index
)$curnode
=$this
->
head
;for($i
=0;$i
<=
$index;$i
++)return
$curnode;}
public
function
delete
(linkedlistnode $node
)$prenode
=$this
->
getprenode
($node);
$prenode
->
next
=$node
->
next
;unset
($node);
$this
->
len--
;return
true;}
private
function
getprenode
(linkedlistnode $node
)$curnode
=$this
->
head
;$prenode
=$this
->
head
;while
(null
!=$curnode
&&$curnode
!=$node
)return
$prenode;}
/** * 指定節點後插入元素
*/private
function
insertafternode
(linkedlistnode $node
,$value
)}
資料結構與演算法 線性表
概念 一種資料結構,每個結點最多只有乙個前驅結點和乙個後繼結點 類別 順序表 定長 鍊錶 變長 棧 棧頂刪除 彈棧 棧頂插入 壓棧 後進先出 lifo 佇列 隊頭刪除 出隊 隊尾插入 入隊 先進先出 fifo 線性表的抽象資料型別定義 c 1.template2.class list 棧的抽象資料型...
資料結構與演算法 線性表
n維向量 x1,x2,xn 是乙個長度為n的線性表 英文小寫字母表 a,b,c,z 是乙個長度為26的線性表 一年中的四個季節 春,夏,秋,冬 是乙個長度為4的線性表 矩陣是乙個比較複雜的線性表 學生情況登記表是乙個複雜的線性表 由若干資料項組成的資料元素稱為記錄 由多個記錄構成的線性表又稱為檔案 ...
資料結構與演算法 線性表
1.線性表 1.1 線性表的定義和基本運算 定義 線性表是具有相同資料型別的n個資料元素的有限序列。除表頭元素外,每個元素有且僅有乙個直接前驅 除表尾元素外,每個元素有且僅有乙個直接後繼。特點 個數有限 具有邏輯上的順序性 資料元素型別都相同。基本操作 初始化 求表長 按值查詢 按位查詢 插入 刪除...