jtahstu的博客

root@jtahstu.com   Github   英文博客  

最新碎语:以后没事写写小的知识点吧

您的位置:jtahstu的博客 >笔记> 标准PHP类库(SPL)之双向链表(SplDoublyLinkList)笔记

标准PHP类库(SPL)之双向链表(SplDoublyLinkList)笔记

今天看了下SPL的双向链表作下笔记


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    	body{
    		font-size: 14px;
    	}
    </style>
</head>
<body>
	<pre>
<?php
    /**
     * Created by PhpStorm.
     * User: jtahstu
     * Date: 16/8/13
     * Time: 下午4:16
     */
    $obj = new SplDoublyLinkedList();
    $obj->push(1);	//添加到链表底部(top)
    $obj->push(2);
    $obj->push(3);
    $obj->unshift(10);	//添加到链表底部(bottom)
	$obj->rewind();	//把节点指针指向当前bottom
	echo 'current:'.$obj->current().'<br />';	//当前指针指向的节点
	
	$obj->next();
	$obj->next();
	$obj->next();	//下一个
	$obj->prev();	//上一个
	echo 'now current:'.$obj->current().'<br />';
	
	$obj->count();
	echo 'count:'.$obj->count().'<br />';
	
//	$obj->valid() 如果当前节点是有效节点,返回true
    var_dump($obj);

	$obj->pop();		//删除顶部(top)元素
	$obj->pop();
	echo 'now current:'.$obj->current().'<br />';	//如果当前节点已经被pop,且current指向top,则为空

	$obj->shift();	//删除底部(bottom)元素
	
    var_dump($obj);
?>
    </pre>
</body>
</html>


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  )
}  


---

本文章采用 知识共享署名2.5中国大陆许可协议 进行许可,欢迎转载,演绎或用于商业目的。

---

二维码加载中...

扫一扫移动端访问O(∩_∩)O

发表评论

80 + 16 =
路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交
正在加载中……