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

29 篇文章 0 订阅
19 篇文章 1 订阅

在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:删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值