php实现双向链表,实现增删改查

本文介绍了一个使用PHP实现的自定义列表类,该类提供了多种操作列表元素的方法,包括插入、删除、获取长度等,并通过示例展示了如何使用这些方法来操作列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

class MyList
{

    public function __construct($data = array())
    {
        $this->data = $data;
    }

    function getLen()
    {
        return count($this->data);
    }

    function getCurrent()
    {
        return current($this->data);
    }

    function getTop()
    {
        return reset($this->data);
    }

    function getNext()
    {
        return next($this->data);
    }

    function getLast()
    {
        return end($this->data);
    }


    public function getData()
    {
        return $this->data;
    }

    public function insertLeft($val)
    {
        return array_unshift($this->data, $val);
    }

    public function removeLeft()
    {
        return array_shift($this->data);
    }

    public function replace($offset, $length, $replace)
    {
        return array_splice($this->data, $offset, $length, $replace);
    }

    public function insertRight($val)
    {
        return array_push($this->data, $val);
    }

    public function removeRight()
    {
        return array_pop($this->data);
    }

    function getPos($val)
    {
        return array_search($val, $this->data);
    }

    function getVal($pos)
    {
        if (isset($this->data['pos'])) {
            return $this->data['pos'];
        } else {
            return false;
        }
    }

    public function insertByPos($pos, $val)
    {
        return array_splice($this->data, $pos, 0, $val);
    }

    public function deleteByPos($pos){
        if (isset($this->data[$pos])){
            unset($this->data[$pos]);
            $this->data = array_values($this->data);
            return true;
        }else{
            return false;
        }
    }


}

$listObj = new MyList(array(1, 2, 3, 4, 5, 6));
//指定位置插入
$listObj->insertByPos(2,'w');
var_dump('指定位置插入:',$listObj->getData());
echo '<br />';
//指定位置删除
$listObj->deleteByPos(2);
var_dump('指定位置删除',$listObj->getData());
echo '<br />';
//左进
$listObj->insertLeft(0);
var_dump('左进:',$listObj->getData());
echo '<br />';
//左出
$listObj->removeLeft();
var_dump('左出',$listObj->getData());
echo '<br />';
//右进
$listObj->insertRight(7);
var_dump('右进',$listObj->getData());
echo '<br />';
//右出
$listObj->removeRight();
var_dump('右出',$listObj->getData());
echo '<br />';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少林码僧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值