SPL学习笔记(2)---类的实现
2016-01-30 15:14
134 查看
一.SPL中的双向链表—SplDoublyLinkedList()
双向链表的操作总结:1.当前节点的操作:
rewind() 指向bottom
current() 当前节点
next() 下一个节点
prev() 上一个节点。
2.增加节点的操作:
push()会插入到top
unshift()会插入到bottom。
3.删除节点的操作:
pop() 会删除节点中的top元素、
shift() 会删除节点中的bottom元素
4.定位操作:
bottom()、top()
5.特定节点的操作:
offsetExsits()、offsetGet()、offsetSet()、offsetUnset()
<?php $obj=new SplDoublyLinkedList(); $obj->push(1); $obj->push(2); $obj->push(3); $obj->unshift(10);//在bottom添加 $obj->shift(); //在bottom删除 // $obj->pop(); $obj->rewind();//在调用current等操作前需要调用rewind() $obj->next(); //从bottom到top echo "current:".$obj->current(); //current:2 $obj->prev(); echo "current:".$obj->current(); //current:1 $obj->prev(); echo "current:".$obj->current(); //current:(指向空节点)
二.SPL中的堆栈—SplStack()
具有先进后出特性的成为堆栈。SplStack继承自SplDoublyLinkedList类、具有父类的一切方法。
注意点:
1.offset 中,0为top所在的节点。(offset总是最先出来的节点)
2.current() 在双向链表中指向bottom位置,在堆栈指向top位置。
3.next()在双向链表由bottom()指向top(),在堆栈中由top()指向bottom()
4.pop()从top删除。同双向链表。
<?php $stack = new SplStack(); $stack->push("A"); $stack->push("B"); $stack->offsetSet(0, "C");//B的值设为C //遍历堆栈 $stack->rewind(); while ($stack->valid()){ echo $stack->key()."=>".$stack->current()."<br>"; $stack->next(); }//1=>c 0=>A $stack->pop(); print_r($stack);//SplStack Object ( [flags:SplDoublyLinkedList:private] => 6 [dllist:SplDoublyLinkedList:private] => Array ( [0] => A ) )
三.SPL中的队列—SplQueue()
队列和堆栈正好相反,最先进入队列的元素会先出队列。类比于排队打饭,排到最前面的人总是最先能够打到饭。
继承自SplDoublyLinkedList()
进入队列:enqueue()进入队列 dequeue()退出队列
注意点:
1.offset 中,0为bottom所在的节点。(offset总是最先出来的节点)
2.current() 在双向链表中指向bottom位置,在队列指向bottom位置。
3.next()在双向链表由bottom()指向top(),在队列由bottom()指向top()。
4.dequeue()删除bottom()节点。
<?php $queue=new SplQueue(); $queue->enqueue(1); $queue->enqueue(2); $queue->enqueue(3); $queue->dequeue();//1会退出队列 $queue->offsetSet(0, "b"); $queue->rewind(); echo "current:".$queue->current();//b
相关文章推荐
- Spark Intro
- SpringMVC与Struts2比较
- C++枚举类型详解
- JavaScript实现右侧悬浮框
- Leetcode题解(十九)
- 车道检测问题探究(二)几何模型拟合
- JPQL查询
- UIGestureRecognizer手势
- 【第一行代码】Android 活动(activity)总结
- 定义一个大整数类,并重载乘法*运算符
- iOS 取消第一响应者
- 无聊的军官
- 如何使用angularjs实现按钮事件
- N皇后问题
- 内核态文件操作
- centos 7 安装sublime text
- python 文件读写
- CSS子元素margin-top对于父元素的影响
- JPA EntityManager详解
- MongoDB 操作手冊CRUD查询指针