双向列表
public function SplDoublyLinkedListTest(){
$obj = new SplDoublyLinkedList();
$obj->push(1);
$obj->push(2);
$obj->push(3);
$obj->unshift(10); //unshifit 替换双向链表的首部
$obj->rewind(); // 使用current 必须调用rewind,把节点指针指向bottom节点
$obj->next(); // next 指向下一个节点
$obj->prev(); // 指针指向上一个节点
echo $obj->current(); // 指针指向当前结点
if($obj->current())
{
echo "y";
}else{
echo "n";
}
if($obj->valid()){
//如果当前节点是有效节点 valid则返回true
}
$obj->pop();
//var_dump($obj);
print_r($obj);
栈
public function SplStackTest(){ $stack = new SplStack(); //实例化堆栈 $stack->push("a"); //向堆栈中加入数据 $stack->push("b"); $stack->push("c"); $stack->offsetSet(0,'C'); //堆栈的节点0是top 的节点,设置节点的值 $stack->rewind(); //双向链表的rewind和堆栈的rewind相反,堆栈的rewind使得当前指针指向TOP所在的位置,而双向链表调用之后指向bottom所在的位置 echo "qq".$stack->next(); // 堆栈的next与双向链表相反 echo "re".$stack->current()."</br>"; echo "bo".$stack->bottom()."</br>"; echo "top".$stack->top(); print_r($stack); $stack->rewind(); while($stack->valid()){ echo $stack->key()."=>".$stack->current()."</br>"; $stack->next(); } $pop = $stack->pop(); echo $pop; }
队列
public function SplQueueTest(){ $que = new SplQueue(); $que->enqueue("a"); // 入队列 $que->enqueue("b"); $que->enqueue("c"); echo "bottom".$que->bottom()."</br>"; echo "top".$que->top(); $que->rewind(); $que->dequeue(); //出队列 print_r($que); }
/** * SplHeap SplMaxHeap SplMinHeap * 堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。 * 根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二叉堆还常用于排序(堆排序)。 * SplHeap 是一个抽象类,实现了Iterator , Countable接口。 * 最大堆(SplMaxHeap)和最小堆(SplMinHeap)就是继承它实现的,可以在PHP程序中直接使用。 * @author wanglitao */ public function SplHeapTest(){ $obj = new SplMaxHeap(); $obj ->insert(41) ; $obj ->insert(82) ; $obj ->insert(28) ; $obj ->insert(18) ; $obj ->insert(8) ; foreach( $obj as $number ) { echo $number.PHP_EOL ; } // 依次输出 82 41 28 18 8 //排好序的数据 }