色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

PHP如何通過帶尾指針的鏈表實現'隊列'

瀏覽:89日期:2022-09-08 18:38:53

這篇文章是展示通過 PHP 語言實現一種帶 尾指針 的鏈表,然后通過鏈表來實現隊列,其中鏈表的頭元素 head 是用于列隊 出隊 的,它的時間復雜度 O(1) ,若在 head 的基礎上實現鏈表尾部 入隊 時間度為 O(n),為了降低入隊操作的時間復雜度,可以給鏈表維護一個帶有尾指針的變量 tail ,這樣每次入隊的時候直接操作 tail ,出隊的時候直接操作 head ,這樣可以使得 入隊 和 出隊 時間復雜度都是 O(1)。

1.output_queue_by_liked_list.php

這是一個演示打印輸出結果的文件:

<?phprequire ’QueueByLinkedList.php’;$queue = new QueueByLinkedList();$queue->enqueue('rr'); //入隊$queue->enqueue('tt'); //入隊$queue->enqueue('yy'); //入隊$queue->enqueue('uu'); //入隊$queue->enqueue('ii'); //入隊$queue->enqueue('oo'); //入隊echo $queue->toString(); //打印 rr->tt->yy->uu->ii->oo->nullecho '<br>';echo $queue->dequeue(); //出隊 打印 rrecho '<br>';echo $queue->dequeue(); //出隊 打印 ttecho '<br>';echo $queue->dequeue(); //出隊 打印 yyecho '<br>';echo $queue->toString(); //打印 uu->ii->oo->nullecho '<br>';$queue->enqueue('11'); //入隊$queue->enqueue('22'); //入隊$queue->enqueue('33'); //入隊$queue->enqueue('44'); //入隊$queue->enqueue('55'); //入隊$queue->enqueue('66'); //入隊echo '<br>';echo $queue->toString(); //打印 uu->ii->oo->11->22->33->44->55->66->null

2.QueueByLinkedList 類

這是通過帶尾指針鏈表實現的 隊列 類,它里面有 入隊(enqueue) 方法和 出隊(dequque) 方法 :

<?phprequire ’Queue.php’;/** * 帶有尾指針的鏈表 * Class LinkedListTail */class QueueByLinkedList implements Queue{ private $head; //鏈表頭部 private $tail; //鏈表尾部 private $size; //鏈表大小 /** * 構造函數 初始化鏈表 * QueueByLinkedList constructor. */ public function __construct() { $this->head = null; $this->tail = null; $this->size = 0; } /** * 入隊操作 * @param $e */ public function enqueue($e): void { if ($this->tail == null) { $this->tail = $this->head = new Node($e, null); } else { $node = new Node($e, null); $this->tail->next = $node; $this->tail = $node; } $this->size++; } /** * 出隊操作 * @return mixed */ public function dequeue() { if ($this->size == 0) { return '隊列已經是空的'; } $node = $this->head; $this->head = $node->next; $this->size--; if ($node->next == null) { $this->tail = null; } return $node->e; } public function getFront() { if ($this->size == 0) { return '隊列已經是空的'; } return $this->head->e; } public function getSize() { return $this->size; } /** * 判斷隊列是否為空 * @return bool */ public function isEmpty(): bool { return $this->size == 0; } public function toString() { $str = ''; for ($node = $this->head; $node != null; $node = $node->next) { $str .= $node->e . '->'; } $str .= 'null'; return $str; }}class Node{ public $e;//節點元素 public $next; //下個節點信息 /** * 構造函數 設置節點信息 * Node constructor. * @param $e * @param $next */ public function __construct($e, $next) { $this->e = $e; $this->next = $next; }}

3.interface Queue

這里是 隊列 類一個實現接口,里面定義了一些函數,繼承它之后,必須重構里面的所有方法:

<?phpinterface Queue{ public function enqueue($e): void;//入隊 public function dequeue();//出隊 public function getFront();//獲取前端元素 public function getSize();//獲取隊列大小 public function isEmpty();//判斷隊列是否為空}

以上就是PHP如何通過帶尾指針的鏈表實現’隊列’的詳細內容,更多關于PHP 實現隊列的資料請關注好吧啦網其它相關文章!

標簽: PHP
主站蜘蛛池模板: 国产亚洲精品91 | 国产成人在线看 | 三级黄色在线 | 国产免费v片在线看 | 国产精品19禁在线观看2021 | 女人扒开双腿让男人捅 | av片免费大全在线观看不卡 | 国产情侣自拍网站 | 久久精品免费一区二区视 | 日韩在线播放中文字幕 | 亚洲第一在线播放 | 久久久久欧美精品观看 | 国产午夜一级淫片 | 日韩中文字幕网 | 国产成人精品日本亚洲专 | 特级毛片aaaa免费观看 | 日本红怡院亚洲红怡院最新 | 99视频在线免费 | 欧美 另类 精品一区视频 | 精品一区二区三区中文 | 欧美丰满大乳大屁股毛片 | 亚洲精品综合欧美一区二区三区 | 中国女人真人一级毛片 | 午夜伦4480yy妇女久久久 | 日韩一区二区不卡 | 在线精品视频在线观看高清 | 久久久久久免费视频 | 欧美一级视频在线 | 印度最猛性ⅹxxxxx | 97在线观看视频免费 | 国产精品亚洲综合久久 | 在线看a级片 | 欧美做a欧美 | 不卡午夜| 三上悠亚免费一区二区在线 | 国产成人精品免费视频大全可播放的 | 亚洲经典在线中文字幕 | 国产综合成人久久大片91 | 欧美一级在线毛片免费观看 | 国产免费v片在线看 | 国产禁女女网站免费看 |