<转>PHP SPL标准库之数据结构栈(SplStack)

栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈)

SplStackSplStack就是继承双链表(SplDoublyLinkedList)实现栈。

类摘要如下:

splstack.png

 简单使用如下:

 

    1. //把栈想象成一个颠倒的数组
    2. $stack = new SplStack();
    3. /**
    4. * 可见栈和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
    5. * (1)SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_KEEP (默认值,迭代后数据保存)
    6. * (2)SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_DELETE (迭代后数据删除)
    7. */
    8. $stack->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_DELETE);
    9. $stack->push('a');
    10. $stack->push('b');
    11. $stack->push('c');
    12.  
    13. $stack->pop(); //出栈
    14.  
    15. $stack->offsetSet(0, 'first');//index 为0的是最后一个元素
    16.  
    17. foreach($stack as $item) {
    18. echo $item . PHP_EOL; // first a
    19. }
    20.  
    21. print_R($stack); //测试IteratorMode

posted on 2015-10-01 21:41  hahahahahai12  阅读(193)  评论(0)    收藏  举报

导航