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

来源:互联网 发布:体检的意义 知乎 编辑:程序博客网 时间:2024/06/06 04:29

代码实例

<?phpnamespace 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:aTop:cobject(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:ccurrent:C2=>c1=>C0=>aPoped object:cobject(SplStack)#4 (2) {  ["flags":"SplDoublyLinkedList":private] => int(6)  ["dllist":"SplDoublyLinkedList":private] => array(2) {    [0] => string(1) "a"    [1] => string(1) "C"  }}
原创粉丝点击