2.SPL数据结构简介

3/8/2017来源:ASP.NET技巧人气:456

这里写图片描述 这里写图片描述 这里写图片描述


双向列表 这里写图片描述

这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述

<?php $obj = new SplDoublyLinkedList(); $obj->push(1); //把新的节点加入 top $obj->push(2); $obj->push(3); $obj->push(33); $obj->unshift(10);//把新的节点加入 bottom echo '<PRe>'; print_r($obj); $obj->rewind(); //把指针指向 bottom echo 'current : '.$obj->current();//必须在rewind后,不然是空 $obj->next();//指向下一个节点 echo '<br/>current : '.$obj->current(); $obj->next(); $obj->next(); $obj->prev();//指向前面一个节点 echo '<br/>current : '.$obj->current(); $obj->next(); $obj->next(); echo '<br/>current : '.$obj->current();//空 if ($obj->valid()) { // 不能用 $obj->current()去判断,因为值有可能为 '',0等 echo 'yes'; } else { echo 'no'; } echo '<hr/>'; echo $obj->pop(),'<br/>';//把 top 节点删除并返回 print_r($obj); echo 'current : '.$obj->current();//current 刚好指向 top,pop之后,指针失效 echo '<hr/>'; echo $obj->shift(),'<br/>';//删除 bottom 节点,并返回 print_r($obj); echo 'current : '.$obj->current();//current 刚好指向 bottom,shift后,指针失效

这里写图片描述


堆栈 这里写图片描述 这里写图片描述 这里写图片描述

这里写图片描述 这里写图片描述

<?php $stack = new SplStack(); $stack->push('aaa'); $stack->push('bbb'); $stack->push('ccc'); echo '<pre>'; print_r($stack); echo 'bottom:'. $stack->bottom(),'<br/>'; echo 'top:'.$stack->top(),'<br/>'; $stack->offsetSet(0,'c');//注意是先进后出,所以 0 是 top 位置,也就是 ccc 变成 c print_r($stack); $stack->rewind(); echo 'current:'.$stack->current(),'<br/>'; //top位置 $stack->next(); echo 'current:'.$stack->current(),'<br/>'; //指向bbb

队列 这里写图片描述

<?php $queue = new SplQueue(); $queue->enqueue('a'); $queue->enqueue('b'); $queue->enqueue('c'); $queue->enqueue('d'); echo '<pre>'; print_r($queue); echo 'bottom:'.$queue->bottom(),"<br/>";//a echo 'top:'.$queue->top(),"<br/>";//d $queue->offsetSet(0,'111');// 0 为 bottom 的位置 print_r($queue); $queue->rewind();//指向 bottom echo 'current:'.$queue->current(),'<br/>'; echo 'dequeue:'.$queue->dequeue(),'<br/>';//从bottom位置删除并取出 print_r($queue);