在Tp5中使用SPL数据结构SplDoublyLinkedList(双向链表)

来源:互联网 发布:知乎 陈廖宇 编辑:程序博客网 时间:2024/06/16 12:56

在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
代码

<?phpnamespace 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

<?phpnamespace 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
代码

<?phpnamespace 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
代码

<?phpnamespace 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:删除

原创粉丝点击