TP5+SPl(堆栈)继承自SplDoublyLinkedList类的SplStack类

29 篇文章 0 订阅
19 篇文章 1 订阅

代码实例

<?php
namespace app\index\controller;
use SplStack;//引入双向链表
class Index
{
    public function index()
    {
        $stack = new SplStack;
        $stack -> push('a');//push操作向堆栈里面放入一个节点到top位置
        $stack -> push('b');
        $stack -> push('c');
        dump($stack);

        echo "Bottom:".$stack->bottom()."<br/>";
        echo "Top:".$stack->top();

        $stack -> offsetSet(1,'C');//堆栈里面0是top所在节点
        dump($stack);

        $stack->rewind();//双向链表的rewind和堆栈的相反,堆栈式当前指针指向top所在的位置,而双向链表指向的是bottom位置
        echo 'current:'.$stack->current()."<br/>";

        $stack->next();//在堆栈中,指针向相反的路径进行移动
        echo 'current:'.$stack->current()."<br/>";

        //遍历堆栈
        $stack->rewind();
        while ($stack -> valid()) {
            echo $stack -> key()."=>".$stack->current()."<br/>";
            $stack -> next();//next操作不从链表中删除数据
        }

        //删除堆栈数据
        $popObj = $stack->pop();//pop操作从堆栈里面提取出最后一个元素(top位置),同时在堆栈里面删除该节点
        echo "Poped object:".$popObj."<br/>";
        dump($stack);

    }   
}

运行结果

object(SplStack)#4 (2) {
  ["flags":"SplDoublyLinkedList":private] => int(6)
  ["dllist":"SplDoublyLinkedList":private] => array(3) {
    [0] => string(1) "a"
    [1] => string(1) "b"
    [2] => string(1) "c"
  }
}
Bottom:a
Top:c
object(SplStack)#4 (2) {
  ["flags":"SplDoublyLinkedList":private] => int(6)
  ["dllist":"SplDoublyLinkedList":private] => array(3) {
    [0] => string(1) "a"
    [1] => string(1) "C"
    [2] => string(1) "c"
  }
}
current:c
current:C
2=>c
1=>C
0=>a
Poped object:c
object(SplStack)#4 (2) {
  ["flags":"SplDoublyLinkedList":private] => int(6)
  ["dllist":"SplDoublyLinkedList":private] => array(2) {
    [0] => string(1) "a"
    [1] => string(1) "C"
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值