鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。
操作複雜。由於不必須按順序儲存,鍊錶在插入的時候可以達到o(1)的複雜度,比另一種線性表順序表快得多,但是查詢乙個節點或者訪問特定編號的節點則需要o(n)的時間,而線性表和順序表相應的時間複雜度分別是o(logn)和o(1)。
單鏈表:它有乙個表頭,並且除了最後乙個結點外,所有結點都有其後繼節點
雙向鍊錶:它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。
迴圈鍊錶:在雙向鍊錶的基礎上做了優化,表中最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。
靜態鍊錶:用陣列來描述的鍊錶,這種描述方法便於在沒有指標型別的高階程式語言中使用鍊錶結構
注意邊界條件
1:鍊錶為空
2:超出鍊錶範圍
單鏈表的增刪改查
class
node
}
include
"node.php"
;class
linklist
//頭插法
public
function
addfirst
($value
)//尾插法
public
function
addlast
($value
)/**
* 通用插入方法 指定索引位置
* @param $index int
* @param $value mixed
* @throws exception
*/public
function
add(
$index
,$value
)$prev
=$this
->
head
;for($i
=0;$i
<
$index;$i
++)$prev
->
next
=new
node
($value
,$prev
->
next);
$this
->
size++;
}/**
* 判斷是否存在某個元素
* @param $value mixed
* @return bool
*/public
function
contain
($value
)$contain
=false
;while
($prev
->
next
!=null
)$prev
=$prev
->
next;}
return
$contain;}
/** * 刪除指定位置的值
* @param $index int
* @return
*/public
function
delete
($index
)$prev
=$this
->
head
;for($i
=0;$i
<=
$index;$i
++)$prev
=$prev
->
next;}
$this
->
size--;
}/**
* 修改指定位置的值
* @param $index int
* @param $value mixed
* @return
*/public
function
update
($index
,$value
)for($i
=0;$i
<=
$index;$i
++)$prev
=$prev
->
next;}
$prev
->
next
->
val=
$value;}
/** * 獲取指定位置的值
* @param $index int
* @param return
*/public
function
getvaluebyindex
($index)if
($index
>
$this
->
size-1
)$prev
=$prev
->
next
;for($i
=0;$i
<=
$index;$i
++)$prev
=$prev
->
next;}
return"";
}}
include
"./singellinklist.php"
;$linklist
=new
linklist()
;$linklist
->
addfirst
("aaa");
$linklist
->
addfirst
(111);
$linklist
->
addlast
("ccc");
var_dump
($linklist
->
contain
("aaa"))
."\n"
;var_dump
($linklist
->
contain
(13123))
."\n"
;$linklist
->
delete(10
);$linklist
->
delete(1
);$linklist
->
update(1
,"test");
echo
$linklist
->
getvaluebyindex(1
)."\n"
;echo
$linklist
->
getvaluebyindex(2
);print_r
($linklist
);
php mysql 鍊錶 php如何實現鍊錶?
php實現鍊錶的方法 首先定義乙個節點類,為 function construct val null 然後實現鍊錶的實現類,為 function construct this dummyhead new nod php實現鍊錶的方法 首先定義乙個節點類class node public val pu...
C 鍊錶 linux 如何實現
鍊錶是基本資料結構,一開始學習資料結構時,我一般這麼定義,對應實現從頭或尾插入的處理函式,struct int node old void old list insert struct int node old head,struct int node old new void old list i...
如何用鍊錶實現棧?
棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元...