最新消息:

PHP中双向链表的简单用法

PHP PHPzailushang 64浏览 0评论

PHP中双向链表的简单用法

一、什么是双向链表?

按照百度词条的说法:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。

我的理解是,双向链表中的每个数据带有两个标识(域),一个可以指向前一个数据的地址,另一个可以指向后一个数据的地址,所以相对单向链表来说,可以比较方便的查找到前一个数据和数据地址,但是比单向链表多使用了内存,也就是空间换时间的做法。

php使用SplDoublyLinkedList类可以实现双向链表。

二、PHP双向链表的用法

<?php

$obj = new SplDoublyLinkedList();//建立一个双向链表对象

echo ‘<pre>’;

$obj->push(1);//上部压入 链表中的元素为[0]=>1,

$obj->push(2);//上部压入 链表中的元素为[0]=>1,[1]=>2

$obj->push(3);//上部压入 链表中的元素为[0]=>1,[1]=>2,[2]=>3

$obj->unshift(8);//底部压入 链表中的元素为[0]=>8,[1]=>1,[2]=>2,[3]=>3

$obj->unshift(9);//底部压入 链表中的元素为[0]=>9,[1]=>8,[2]=>1,[3]=>2,[4]=>3

$obj->unshift(10);//底部压入链表中的元素为[0]=>10,[1]=>9,[2]=>8,[3]=>1,[4]=>2,[5]=>3

//此时链表中的元素自下向上依次为:[0]=>10,[1]=>9,[2]=>8,[3]=>1,[4]=>2,[5]=>3

$obj->rewind();//将指针指向底部第一个元素,这里指的是10这个元素

$obj->next();//将指针向上移动一个单位,此时指针指向9这个元素

$obj->prev();//将指针向下移动一个单位,此时指针指向10这个元素

echo $obj->bottom();//查看底部元素,此时指针位置未变

echo $obj->top();//查看上部元素,此时指针位置不变

$obj->add(1,12);//添加元素,在0的位置上添加一个12,链表中的元素为[0]=>10,[1]=>12,[2]=>9,[3]=>8,[4]=>1,[5]=>2,[6]=>3

$obj->next();

echo $obj->key();//查看当前指针位置

echo $obj->current();//查看当前指针所对应的元素

echo $obj->valid();//查看当前节点是否为有效节点,是的话,返回true;

$obj->pop();//删除最上部的一个,top,如果删除当前节点,则指针为空。

$obj->shift();//删除最底部的一个元素,bottom

贴图:

PHP中双向链表的简单用法

转载请注明:PHP学习 » PHP中双向链表的简单用法

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址