class SplDoublyLinkedList implements Iterator, Traversable, Countable, ArrayAccess {
const IT_MODE_LIFO = 2;
const IT_MODE_FIFO = 0;
const IT_MODE_DELETE = 1;
const IT_MODE_KEEP = 0; /**
* Add/insert a new value at the specified index
* @param mixed $index The index where the new value is to be inserted.
* @param mixed $newval The new value for the index.
* @link http://php.net/spldoublylinkedlist.add
* @return void
* @since 5.5.0
*/
public function add($index, $newval) {} /**
* Pops a node from the end of the doubly linked list
* @link http://php.net/manual/en/spldoublylinkedlist.pop.php
* @return mixed The value of the popped node.
* @since 5.3.0
*/
public function pop () {} /**
* Shifts a node from the beginning of the doubly linked list
* @link http://php.net/manual/en/spldoublylinkedlist.shift.php
* @return mixed The value of the shifted node.
* @since 5.3.0
*/
public function shift () {} /**
* Pushes an element at the end of the doubly linked list
* @link http://php.net/manual/en/spldoublylinkedlist.push.php
* @param mixed $value <p>
* The value to push.
* </p>
* @return void
* @since 5.3.0
*/
public function push ($value) {} /**
* Prepends the doubly linked list with an element
* @link http://php.net/manual/en/spldoublylinkedlist.unshift.php
* @param mixed $value <p>
* The value to unshift.
* </p>
* @return void
* @since 5.3.0
*/
public function unshift ($value) {} /**
* Peeks at the node from the end of the doubly linked list
* @link http://php.net/manual/en/spldoublylinkedlist.top.php
* @return mixed The value of the last node.
* @since 5.3.0
*/
public function top () {} /**
* Peeks at the node from the beginning of the doubly linked list
* @link http://php.net/manual/en/spldoublylinkedlist.bottom.php
* @return mixed The value of the first node.
* @since 5.3.0
*/
public function bottom () {} /**
* Counts the number of elements in the doubly linked list.
* @link http://php.net/manual/en/spldoublylinkedlist.count.php
* @return int the number of elements in the doubly linked list.
* @since 5.3.0
*/
public function count () {} /**
* Checks whether the doubly linked list is empty.
* @link http://php.net/manual/en/spldoublylinkedlist.isempty.php
* @return bool whether the doubly linked list is empty.
* @since 5.3.0
*/
public function isEmpty () {} /**
* Sets the mode of iteration
* @link http://php.net/manual/en/spldoublylinkedlist.setiteratormode.php
* @param int $mode <p>
* There are two orthogonal sets of modes that can be set:
* </p>
* The direction of the iteration (either one or the other):
* <b>SplDoublyLinkedList::IT_MODE_LIFO</b> (Stack style)
* @return void
* @since 5.3.0
*/
public function setIteratorMode ($mode) {} /**
* Returns the mode of iteration
* @link http://php.net/manual/en/spldoublylinkedlist.getiteratormode.php
* @return int the different modes and flags that affect the iteration.
* @since 5.3.0
*/
public function getIteratorMode () {} /**
* Returns whether the requested $index exists
* @link http://php.net/manual/en/spldoublylinkedlist.offsetexists.php
* @param mixed $index <p>
* The index being checked.
* </p>
* @return bool true if the requested <i>index</i> exists, otherwise false
* @since 5.3.0
*/
public function offsetExists ($index) {} /**
* Returns the value at the specified $index
* @link http://php.net/manual/en/spldoublylinkedlist.offsetget.php
* @param mixed $index <p>
* The index with the value.
* </p>
* @return mixed The value at the specified <i>index</i>.
* @since 5.3.0
*/
public function offsetGet ($index) {} /**
* Sets the value at the specified $index to $newval
* @link http://php.net/manual/en/spldoublylinkedlist.offsetset.php
* @param mixed $index <p>
* The index being set.
* </p>
* @param mixed $newval <p>
* The new value for the <i>index</i>.
* </p>
* @return void
* @since 5.3.0
*/
public function offsetSet ($index, $newval) {} /**
* Unsets the value at the specified $index
* @link http://php.net/manual/en/spldoublylinkedlist.offsetunset.php
* @param mixed $index <p>
* The index being unset.
* </p>
* @return void
* @since 5.3.0
*/
public function offsetUnset ($index) {} /**
* Rewind iterator back to the start
* @link http://php.net/manual/en/spldoublylinkedlist.rewind.php
* @return void
* @since 5.3.0
*/
public function rewind () {} /**
* Return current array entry
* @link http://php.net/manual/en/spldoublylinkedlist.current.php
* @return mixed The current node value.
* @since 5.3.0
*/
public function current () {} /**
* Return current node index
* @link http://php.net/manual/en/spldoublylinkedlist.key.php
* @return mixed The current node index.
* @since 5.3.0
*/
public function key () {} /**
* Move to next entry
* @link http://php.net/manual/en/spldoublylinkedlist.next.php
* @return void
* @since 5.3.0
*/
public function next () {} /**
* Move to previous entry
* @link http://php.net/manual/en/spldoublylinkedlist.prev.php
* @return void
* @since 5.3.0
*/
public function prev () {} /**
* Check whether the doubly linked list contains more nodes 当前指针处元素是否有效
* @link http://php.net/manual/en/spldoublylinkedlist.valid.php
* @return bool true if the doubly linked list contains any more nodes, false otherwise.
* @since 5.3.0
*/
public function valid () {} /**
* Unserializes the storage
* @link http://php.net/manual/ru/spldoublylinkedlist.serialize.php
* @param string $serialized The serialized string.
* @return void
* @since 5.4.0
*/
public function unserialize($serialized) {} /**
* Serializes the storage
* @link http://php.net/manual/ru/spldoublylinkedlist.unserialize.php
* @return string The serialized string.
* @since 5.4.0
*/
public function serialize () {} }

用例

<?php
header("Content-type: text/html; charset=gb2312");
$doubly=new SplDoublyLinkedList();
$doubly->push('a');
$doubly->push('b');
$doubly->push('c');
$doubly->push('d');
$doubly->add(1,'e'); echo 'Original:'."\n";
var_dump($doubly); echo 'FIFO|KEEP:'."\n";
$doubly->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_KEEP);
$doubly->rewind();
foreach($doubly as $key=>$value)
{
echo $key.' '.$value."\n";
} echo 'LIFO|KEEP:'."\n";
$doubly->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_KEEP);
$doubly->rewind();
foreach($doubly as $key=>$value)
{
echo $key.' '.$value."\n";
} echo 'LIFO|DELETE:'."\n";
$doubly->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_DELETE);
$doubly->rewind();
foreach($doubly as $key=>$value)
{
if($key == 1) break;
echo $key.' '.$value."\n";
}
echo 'List after Delete'."\n";
var_dump($doubly);
?>

PHP标准库(SPL)- SplDoublyLinkedList类(双向链表)的更多相关文章

  1. PHP 标准库 SPL 之数据结构栈(SplStack)简单实践

    PHP 5.3.0 版本及以上的堆栈描述可以使用标准库 SPL 中的 SplStack class,SplStack 类继承双链表 ( SplDoublyLinkedList ) 实现栈. 代码: & ...

  2. php标准库spl栈SplStack如何使用?

    php标准库spl栈SplStack如何使用? 一.总结 php标准库spl栈SplStack介绍.(SplStack类)(各种方法都支持) 1.SplStack类:$stack = new SplS ...

  3. C++解析(18):C++标准库与字符串类

    0.目录 1.C++标准库 2.字符串类 3.数组操作符的重载 4.小结 1.C++标准库 有趣的重载--操作符 << 的原生意义是按位左移,例:1 << 2;,其意义是将整数 ...

  4. C 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法(gcc使用zh_CN.GBK,或者zh_CN.UTF-8,VC++使用Chinese_People's Republic of China.936或者65001.)

    转自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ [在此向原文作者说声谢谢!若有读者看到文章转载时请写该转载地址 ...

  5. PHP标准库 (SPL) 笔记

    简介 SPL是Standard PHP Library(PHP标准库)的缩写. The Standard PHP Library (SPL) is a collection of interfaces ...

  6. 【夯实PHP基础】PHP标准库 SPL

    PHP SPL笔记 这几天,我在学习PHP语言中的SPL. 这个东西应该属于PHP中的高级内容,看上去很复杂,但是非常有用,所以我做了长篇笔记.不然记不住,以后要用的时候,还是要从头学起. 由于这是供 ...

  7. PHP标准库 SPL

    PHP SPL笔记 这几天,我在学习PHP语言中的SPL. 这个东西应该属于PHP中的高级内容,看上去很复杂,但是非常有用,所以我做了长篇笔记.不然记不住,以后要用的时候,还是要从头学起. 由于这是供 ...

  8. PHP标准库SPL

    SPL是Standard PHP Library(PHP标准库)的缩写.用来解决典型(常见)问题(common problems)的一组接口与类的集合 典型问题(common problems) - ...

  9. 基于标准库的string类实现简单的字符串替换

    感觉基本功还是不扎实,虽然能做些程序但是现在看来我还是个初学者(primer),试着完成习题结果还得修修改改. 废话不多说,实现功能很简单,<C++ Primer>9.5.2节习题. // ...

  10. Python - 标准库部分函数、类的大致实现(持续更新)

    all() def all(iterable): for element in iterbale: if not element: return False return True any() def ...

随机推荐

  1. Android编程中的5种数据存储方式

    Android编程中的5种数据存储方式 作者:牛奶.不加糖 字体:[增加 减小] 类型:转载 时间:2015-12-03我要评论 这篇文章主要介绍了Android编程中的5种数据存储方式,结合实例形式 ...

  2. (简单) POJ 2406 Power Strings,扩展KMP。

    Description Given two strings a and b we define a*b to be their concatenation. For example, if a = & ...

  3. CodeForces 652C Foe Pairs

    只要计算每个位置最多能到哪个位置,累加即可,DP从后往前预处理一下每个位置到达的最远位置. 有坑点:输入的时候如果同一个点出发的,需要保存最小值. #include<cstdio> #in ...

  4. HUST 1353 Dartboard

    构造.应该有多种构造方法.做的时候WA了好几发,怀疑做法是错的,事实上是代码写搓了.. 我是这样构造的:先从上往下左右放奇数,再从下往上左右填偶数 (一)如果n/2是偶数(以12为例) 左边列是内环, ...

  5. laravel5 html引用问题

    1. Composer 安装 编辑 composer.json 文件, require 节点下增加: "illuminate/html": "~5.0" 然后 ...

  6. windows server 2012 AD 活动目录部署系列(五)备份和还原域控制器

    在前篇博文中,我们介绍了用户资源的权限分配,用户只要在登录时输入一次口令,就能访问基于该域所分配给他的所有资源. 但是我们需要考虑一个问题:万一域控制器坏了怎么办?!如果这个域控制器损坏了,那用户登录 ...

  7. linux下配置ip地址四种方法(图文)

    (1)Ifconfig命令   第一种使用ifconfig命令配置网卡的ip地址.此命令通常用来零时的测试用,计算机启动后 ip地址的配置将自动失效.具体用法如下.Ipconfig  ethx   i ...

  8. NSDateFormatter调整时间格式的代码

    NSDateFormatter调整时间格式的代码 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如://实例化一个NSDat ...

  9. jquery中(function($){...})(jQuery)是什么

    调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:(function(arg){...})(param)而(function($){...}) (jQuery) ...

  10. 【java基础】内部类,局部内部类,匿名内部类、静态内部类、接口中的内部类

    内部类: 1.定义在一个类中的内部类,内部类的实例化伴随着外围类所定义的方法来构造,内部类对象有外围类的隐式引用,所以内部类可以直接访问外围类的外围类的域,包括私有的,这是内部类的访问特权,所以比常规 ...