亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP如何通過(guò)帶尾指針的鏈表實(shí)現(xiàn)'隊(duì)列'

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

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

1.output_queue_by_liked_list.php

這是一個(gè)演示打印輸出結(jié)果的文件:

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

2.QueueByLinkedList 類(lèi)

這是通過(guò)帶尾指針鏈表實(shí)現(xiàn)的 隊(duì)列 類(lèi),它里面有 入隊(duì)(enqueue) 方法和 出隊(duì)(dequque) 方法 :

<?phprequire ’Queue.php’;/** * 帶有尾指針的鏈表 * Class LinkedListTail */class QueueByLinkedList implements Queue{ private $head; //鏈表頭部 private $tail; //鏈表尾部 private $size; //鏈表大小 /** * 構(gòu)造函數(shù) 初始化鏈表 * QueueByLinkedList constructor. */ public function __construct() { $this->head = null; $this->tail = null; $this->size = 0; } /** * 入隊(duì)操作 * @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++; } /** * 出隊(duì)操作 * @return mixed */ public function dequeue() { if ($this->size == 0) { return '隊(duì)列已經(jīng)是空的'; } $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 '隊(duì)列已經(jīng)是空的'; } return $this->head->e; } public function getSize() { return $this->size; } /** * 判斷隊(duì)列是否為空 * @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;//節(jié)點(diǎn)元素 public $next; //下個(gè)節(jié)點(diǎn)信息 /** * 構(gòu)造函數(shù) 設(shè)置節(jié)點(diǎn)信息 * Node constructor. * @param $e * @param $next */ public function __construct($e, $next) { $this->e = $e; $this->next = $next; }}

3.interface Queue

這里是 隊(duì)列 類(lèi)一個(gè)實(shí)現(xiàn)接口,里面定義了一些函數(shù),繼承它之后,必須重構(gòu)里面的所有方法:

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

以上就是PHP如何通過(guò)帶尾指針的鏈表實(shí)現(xiàn)’隊(duì)列’的詳細(xì)內(nèi)容,更多關(guān)于PHP 實(shí)現(xiàn)隊(duì)列的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
主站蜘蛛池模板: 精品高清写真视频在线 | 91久久在线 | 美女被啪全免视频软件 | 国产精品suv | 亚洲成网777777国产精品 | 国产精品久久久久久影院 | 国产一级黄 | 欧美特级大片 | 综合欧美日韩一区二区三区 | 亚洲国产婷婷香蕉久久久久久 | 黄网站免费观看 | 中文字幕色在线 | 12306播播影院午夜 | 国产高清亚洲 | 日韩中文字幕视频在线观看 | 羞羞色院91精品网站 | 又粗又大又爽 真人一级毛片 | 日韩一区二区三区视频在线观看 | 亚洲精品国产综合99久久一区 | 国产在播放一区 | 韩国免费特一级毛片 | 一级做a毛片免费视频 | 国产一区在线mmai | 国产一区二区免费播放 | www.成人网.com | 国产丝袜按摩女技师在线 | 亚洲美女视频一区 | 成人网址在线观看 | 国产精品白浆精子流水合集 | 99久久久国产精品免费牛牛四川 | 一级做a爰片久久毛片唾 | 婷婷久久综合 | 日韩精品亚洲专区在线影视 | 亚洲精品一区二区三区在线播放 | 日韩系列在线 | 在线黄色小视频 | www.久久视频 | 久久国产综合精品欧美 | 国产麻豆剧传媒精品国产免费 | 美女一级牲交毛片视频 | jk足控福利国产在线播放 |