·基本概念
節點1<--訪問-->節點2<--訪問-->節點3 雙向鍊錶
bottom:最先新增到鍊錶中的節點叫做bottom(底部),也稱為頭部(head)
top:最後新增到鍊錶中的節點叫做top(頭部),也稱為尾部
鍊錶指標:是乙個當前關注的節點的標識,可以指向任意節點
當前節點:鍊錶指標指向的節點稱為當前節點
·基本概念
節點1==細化==》節點名稱/節點資料
節點名稱:可以在鍊錶中唯一標識乙個節點的名稱,我們通常稱為節點的key或者offset.
節點資料:存放在鍊錶中的應用資料,我們通常稱為style.
·spldoublylinkedlist類
·操作-當前節點操作:rewind、current、next、prev
-增加節點操作:push、unshift
-刪除節點操作:pop、shift
-定位操作:bottom、top
-特定節點操作:offsetexists、offsetget、offsetset、offsetunset
例項:<?php
$obj = new spldoublylinkedlist();
//把新的節點資料新增到鍊錶的頂部(top)
$obj->push("hello");
$obj->push("2");
$obj->push("3");
//unshift把新的節點資料新增到鍊錶底部(bottom)
$obj->unshift("10");
$obj->rewind();
// rewind操作用於把節點指標指向bottom所在的節點
// current在別的函式呼叫前是不能被呼叫的 所以在使用current前使用rewind
echo "current:".$obj->current()."
";//獲取節點指標指向的節點(當前節點)
$obj->next();
$obj->next();
$obj->pop(); //把top位置的節點從鍊錶中刪除,並返回。如果current正好指向top位置,那麼呼叫pop之後current會失效
echo "
";";print_r($obj);
echo "
echo "next node:".$obj->current()."
";$obj->shift();//把bottom位置的節點從鍊錶中刪除,並返回。
echo "
";";print_r($obj);
echo "
?>
·理解和回顧
最後進入到堆疊裡面的資料最先拿出堆疊(first in last out filo)
·繼承自spldoublylinkedlist類的splstack類
·操作-push:壓入堆疊(存入)
-pop:退出堆疊(取出)
例項:<?php
$stack = new splstack();
$stack->push("a"); //push操作向堆疊裡面放入乙個節點到top位置
$stack->push("b");
$stack->push("c");
$stack->push("d");
echo "
";";print_r($stack);
echo "
echo "bottom:".$stack->bottom()."
";echo "top:".$stack->top()."
";$stack->offsetset(0,'d'); //堆疊的offset=0是top所在的位置,offset=1是top位置節點靠近bottom的相鄰節點,以此類推
echo "
";";print_r($stack);
echo "
$stack->rewind(); //雙向鍊錶的rewind和堆疊的rewind相反,堆疊的rewind使得當前指標指向top所在的位置,而雙向鍊錶呼叫之後指向bottom所在位置
echo 'current:'.$stack->current()."
";$stack->next(); //堆疊的next操作使指標指向靠近bottom位置的下乙個節點,而雙向鍊錶是靠近top的下乙個節點
echo 'current:'.$stack->current()."
";// 遍歷堆疊
$stack->rewind();
while($stack->valid())
// 刪除堆疊資料
$popobj = $stack->pop();//pop操作從堆疊裡面提取出最後乙個元素(top位置),同時在堆疊裡面刪除該節點
echo "poped object:".$popobj."
";echo "
";";print_r($stack);
echo "
?>
·佇列和堆疊剛好相反,最先進入佇列的元素會最先走出佇列
-就像排隊打飯,排在最前面的人總是最先能夠打到飯
·繼承自spldoublylinkedlist類的splqueue類
·操作-enqueue:進入佇列
-dequeue:退出佇列
例項:<?php
$queue = new splqueue();
$queue->enqueue('a');
$queue->enqueue('b');
$queue->enqueue('c');
echo "
";";print_r($queue);
echo "
echo "bottom:".$queue->bottom()."
";echo "top:".$queue->top()."
";$queue->offsetset(0,"a");//佇列裡面offset=0是bottom所在位置,offset=1是top方向的相鄰節點,以此類推
echo "
";";print_r($queue);
echo "
$queue->rewind();//佇列裡面的rewind操作使得指標指向bottom所在位置的節點
echo 'current:'.$queue->current()."
";echo "
";";print_r($queue);
echo "
// 遍歷佇列
$queue->rewind();
while($queue->valid())
// 刪除佇列資料
$obj = $queue->dequeue();//pop操作從堆疊裡面提取出最後乙個元素(top位置),同時在堆疊裡面刪除該節點
echo "poped object:".$obj."
";echo "
";";print_r($queue);
echo "
?>
spl 教程二 資料結構
雙向列表 public function spldoublylinkedlisttest elseif obj valid obj pop var dump obj print r obj 棧public function splstacktest pop stack pop echo pop 佇列...
SPL標準庫 資料結構
資料結構 棧 stack new splstack stack push data1 n stack push data2 n echo stack pop echo stack pop 資料結構 佇列 queue new splqueue queue enqueue data1 n queue e...
常用的資料結構
人們常說資料結構,面試的時候也常被問道資料結構相關的問題,到底什麼是資料結構?資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。資料結構在計算機...