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


    一: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
  • 相关阅读:
    [转]select any dictionary与select_catalog_role区别
    [转]Oracle DB 权限与角色
    About Secure Application Roles
    [转]Oracle DB 用户
    [转]Oracle DB 管理数据库存储结构
    lsnrctl工具之service
    [转]Oracle DB 配置Oracle Network环境
    [转]Oracle DB 性能视图和数据字典
    [转]Oracle DB 查看预警日志
    判断数据库启动时使用的参数文件类型的方法
  • 原文地址:https://www.cnblogs.com/bwcx/p/spl2.html
Copyright © 2020-2023  润新知