码迷,mamicode.com
首页 > 其他好文 > 详细

SPL学习笔记(2)---类的实现

时间:2015-04-02 20:37:21      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

一: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()
  •      SplDoublyLinkedList的实现

      

 1 <?php
 2 $obj=new SplDoublyLinkedList();
 3 $obj->push(1);
 4 $obj->push(2);
 5 $obj->push(3);
 6 $obj->unshift(10);//在bottom添加
 7 $obj->shift();    //在bottom删除
 8 // $obj->pop();
 9 $obj->rewind();//在调用current等操作前需要调用rewind()
10 $obj->next();  //从bottom到top
11 echo "current:".$obj->current(); //current:2
12 $obj->prev();
13 echo "current:".$obj->current(); //current:1
14 $obj->prev();
15 echo "current:".$obj->current(); //current:(指向空节点)

二:SPL中的堆栈---SplStack()

技术分享SPL的堆栈就像一个圆盘,要想把3拿出来,必须把5、7都拿出来。先进后出

 

具有先进后出特性的成为堆栈。SplStack继承自SplDoublyLinkedList类、具有父类的一切方法。

注意点:

  1. offset 中,0为top所在的节点。(offset总是最先出来的节点)
  2. current() 在双向链表中指向bottom位置,在堆栈指向top位置。
  3. next()在双向链表由bottom()指向top(),在堆栈中由top()指向bottom()
  4. pop()从top删除。同双向链表。
 1 <?php 
 2 $stack = new SplStack();
 3 $stack->push("A");
 4 $stack->push("B");
 5 $stack->offsetSet(0, "C");//B的值设为C
 6 //遍历堆栈
 7 $stack->rewind();
 8 while ($stack->valid()){
 9     echo $stack->key()."=>".$stack->current()."<br>";
10     $stack->next();
11 }//1=>c 0=>A
12 $stack->pop();
13 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()节点。
1 <?php 
2 $queue=new SplQueue();
3 $queue->enqueue(1);
4 $queue->enqueue(2);
5 $queue->enqueue(3);
6 $queue->dequeue();//1会退出队列
7 $queue->offsetSet(0, "b");
8 $queue->rewind();
9 echo "current:".$queue->current();//b

 

SPL学习笔记(2)---类的实现

标签:

原文地址:http://www.cnblogs.com/bwcx/p/spl2.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!