在tp5中引入SplDoublyLinkedList
namespace app\index\controller;
use SplDoublyLinkedList;//引入双向链表
class Index
{
public function index()
{
$obj = new SplDoublyLinkedList();//实例化双向链表
}
}
操作
当前节点操作:
rewind:链表指针第一个节点
next:bottom-top,移动下一个节点
prev:top-bottom,移动到上一个节点
valid:如果当前节点是有效节点的话,返回true
1.rewind
代码
<?php
namespace app\index\controller;
use SplDoublyLinkedList;//引入双向链表
class Index
{
public function index()
{
$obj = new SplDoublyLinkedList();//实例话双向链表
$obj -> push('g');
$obj -> push('y');
$obj -> push('z');
$obj -> rewind();
echo '我是指针,我现在所在的位置是:'.$obj -> current();
}
}
结果
2.next
<?php
namespace app\index\controller;
use SplDoublyLinkedList;//引入双向链表
class Index
{
public function index()
{
$obj = new SplDoublyLinkedList();//实例话双向链表
$obj -> push('g');
$obj -> push('y');
$obj -> push('z');
$obj -> rewind();
$obj -> next();
echo '我是指针,我现在所在的位置是:'.$obj -> current();
}
}
结果
3.prev:同上相反
增加节点操作
push:向链表中添加一个节点
unshift:向链表中塞一个节点
1.push
代码
<?php
namespace app\index\controller;
use SplDoublyLinkedList;//引入双向链表
class Index
{
public function index()
{
$obj = new SplDoublyLinkedList();//实例话双向链表
$obj -> push(1);
$obj -> push(2);
$obj -> push(3);
dump($obj);
}
}
运行结果
2.unshift
代码
<?php
namespace app\index\controller;
use SplDoublyLinkedList;//引入双向链表
class Index
{
public function index()
{
$obj = new SplDoublyLinkedList();//实例话双向链表
$obj -> push(1);
$obj -> push(2);
$obj -> push(3);
$obj -> unshift(10);
dump($obj);
}
}
结果
也就是说,塞入元素的话,是塞入到bottom
删除节点操作
pop和shift:对特定节点进行删除
1.pop
移除top,但是对指针位置没有影响 如果指针位置正好在top的话,移除之后指针指向无效元素
定位操作
bottom:链表的尾部,第一个添加的节点
top:链表的头部,最后一个添加的节点
特定节点操作
offsetExists:查找
offsetGet:获得
offsetSet:更新
offsetUnset:删除