SplDoublyLinkedList類提供了雙向鏈表的主要功能。
方法
add — 在指定的索引處添加/插入新值
bottom — 從雙向鏈表的開始處查看節(jié)點
__construct — 構(gòu)造一個新的雙向鏈表
count — 計算雙向鏈表中元素的數(shù)量镣煮。
current — 返回當前數(shù)組條目
getIteratorMode — 返回迭代的模式
isEmpty — 檢查雙向鏈表是否為空鳍置。
key — 返回當前節(jié)點的索引
next — 移動到下一個條目
offsetExists — 返回請求的$index是否存在
offsetGet — 返回指定$index的值
offsetSet — 將指定$ index的值設置為$newval
offsetUnset — 取消設置指定$index的值
pop — 從雙向鏈表的末尾處彈出節(jié)點
prev — 移動到上一個條目
push — 在雙向鏈表的末尾推一個元素
rewind — 回滾迭代器回到開始
serialize — 序列化存儲
setIteratorMode — 設置迭代的模式
shift — 從雙向鏈表的末尾窺探節(jié)點
top — 從雙向鏈表的末尾查看節(jié)點
unserialize — 反序列化存儲
unshift —在元素前面添加雙向鏈表
valid — 檢查雙向鏈表是否包含更多的節(jié)點
示例1
<?php
$list = new SplDoublyLinkedList();
//從尾部壓入4個元素
$list->push('A');
$list->push('C');
$list->push('C');
$list->push('D');
//先進先出
echo "FIFO (First In First Out) :" . PHP_EOL;
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current() . "\n";
}
//LIFO (先進后出)
echo "LIFO (Last In First Out) :" . PHP_EOL;
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current() . "\n";
}
執(zhí)行結(jié)果如圖:
Paste_Image.png
示例2
<?php
$dlist = new SplDoublyLinkedList();
//在列表的末尾插入數(shù)據(jù)
$dlist->push('c++');
$dlist->push('java');
$dlist->push('go');
//unshift會在列表頂部插入數(shù)據(jù)
$dlist->unshift("1 jsp");
$dlist->unshift("2 php");
$dlist->unshift("3 asp");
/*
列表數(shù)據(jù):
3 asp
2 php
1 jsp
c++
java
go
*/
//--------------------------------------
//pop從列表的尾部刪除一個元素
$dlist->pop();
/*
列表數(shù)據(jù):
3 asp
2 php
1 jsp
c++
java
*/
//--------------------------------------
//shift()從列表頂部刪除一個項目域慷,
$dlist->shift();
/*
列表數(shù)據(jù):
2 php
1 jsp
c++
java
*/
//--------------------------------------
//add的方法替換特定索引處的值,如果要替換不存在的項,將拋出異常
$dlist->add(3, "C#");
/*
列表數(shù)據(jù):
2 php
1 jsp
c++
C#
java
*/
//--------------------------------------
//rewind()方法根據(jù)迭代器指向列表的首字母
//valid()方法檢查列表是否有效
//next()指向列表中的下一個數(shù)據(jù)涂佃。
for ($dlist->rewind(); $dlist->valid(); $dlist->next()) {
echo $dlist->current() . PHP_EOL;
}
echo PHP_EOL;
/*
列表數(shù)據(jù):
2 php
1 jsp
c++
C#
java
*/
//默認先進先出稻轨,我們將遍歷模式改為先進后出
$dlist->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO);
for ($dlist->rewind(); $dlist->valid(); $dlist->next()) {
echo $dlist->current() . PHP_EOL;
}
/*
列表數(shù)據(jù):
java
C#
c++
1 jsp
2 php
*/