PHP 双链表(SplDoublyLinkedList)简介和使用实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-26 16:15:35 浏览: 评论:0
这篇文章主要介绍了PHP 双链表(SplDoublyLinkedList)简介和使用实例的相关资料,需要的朋友可以参考下。
双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址。
PHP SPL中的SplDoublyLinkedList类提供了对双链表的操作。
SplDoublyLinkedList类摘要如下:
- SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {
- public __construct ( void )
- public void add ( mixed $index , mixed $newval )
- //双链表的头部节点
- public mixed top ( void )
- //双链表的尾部节点
- public mixed bottom ( void )
- //双联表元素的个数
- public int count ( void )
- //检测双链表是否为空
- public bool isEmpty ( void )
- //当前节点索引
- public mixed key ( void )
- //移到上条记录
- public void prev ( void )
- //移到下条记录
- public void next ( void )
- //当前记录
- public mixed current ( void )
- //将指针指向迭代开始处
- public void rewind ( void )
- //检查双链表是否还有节点
- public bool valid ( void )
- //指定index处节点是否存在
- public bool offsetExists ( mixed $index )
- //获取指定index处节点值
- public mixed offsetGet ( mixed $index )
- //设置指定index处值
- public void offsetSet ( mixed $index , mixed $newval )
- //删除指定index处节点
- public void offsetUnset ( mixed $index )
- //从双链表的尾部弹出元素
- public mixed pop ( void )
- //添加元素到双链表的尾部
- public void push ( mixed $value )
- //序列化存储
- public string serialize ( void )
- //反序列化
- public void unserialize ( string $serialized )
- //设置迭代模式
- public void setIteratorMode ( int $mode )
- //获取迭代模式SplDoublyLinkedList::IT_MODE_LIFO (Stack style) SplDoublyLinkedList::IT_MODE_FIFO (Queue style)
- public int getIteratorMode ( void )
- //双链表的头部移除元素
- public mixed shift ( void )
- //双链表的头部添加元素
- public void unshift ( mixed $value )
- }
使用起来也是简单。
- $list = new SplDoublyLinkedList();
- $list->push('a');
- $list->push('b');
- $list->push('c');
- $list->unshift('top');
- $list->shift();
- print_r(array(
- 'pop' => $list->pop(),
- 'count' => $list->count(),
- 'isEmpty' => $list->isEmpty(),
- 'bottom' => $list->bottom(),
- 'top' => $list->top()
- ));
- $list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
- print_r($list->getIteratorMode());
- for($list->rewind(); $list->valid(); $list->next()) {
- echo $list->current().PHP_EOL;
- }
- print_r($a = $list->serialize());
- //print_r($list->unserialize($a));
- $list->offsetSet(0,'new one');
- $list->offsetUnset(0);
- print_r(array(
- 'offsetExists' => $list->offsetExists(4),
- 'offsetGet' => $list->offsetGet(0),
- ));
- print_r($list);
Tags: PHP双链表 SplDoublyLinkedList
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)