最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年10月22日 11:07:47   作者:愛(ài)因詩(shī)賢  
這篇文章主要介紹了PHP如何通過(guò)帶尾指針的鏈表實(shí)現(xiàn)'隊(duì)列',幫助大家更好的理解和使用php,感興趣的朋友可以了解下

這篇文章是展示通過(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é)果的文件:

<?php
require '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->null
echo "<br>";
echo $queue->dequeue(); //出隊(duì) 打印 rr
echo "<br>";
echo $queue->dequeue(); //出隊(duì) 打印 tt
echo "<br>";
echo $queue->dequeue(); //出隊(duì) 打印 yy
echo "<br>";
echo $queue->toString(); //打印 uu->ii->oo->null
echo "<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 類

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

<?php
require '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ì)列 類一個(gè)實(shí)現(xiàn)接口,里面定義了一些函數(shù),繼承它之后,必須重構(gòu)里面的所有方法:

<?php
interface 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)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Laravel框架下載,安裝及路由操作圖文詳解

    Laravel框架下載,安裝及路由操作圖文詳解

    這篇文章主要介紹了Laravel框架下載,安裝及路由操作,結(jié)合實(shí)例形式詳細(xì)分析了laravel框架的下載、安裝、配置、路由等相關(guān)操作原理與使用技巧,需要的朋友可以參考下
    2019-12-12
  • 完美的2個(gè)php檢測(cè)字符串是否是utf-8編碼函數(shù)分享

    完美的2個(gè)php檢測(cè)字符串是否是utf-8編碼函數(shù)分享

    這篇文章主要介紹了完美的2個(gè)php檢測(cè)字符串是否是utf-8編碼函數(shù)分享,一個(gè)比較強(qiáng)大、一個(gè)比較簡(jiǎn)潔,需要的朋友可以參考下
    2014-07-07
  • 深入淺析用PHP實(shí)現(xiàn)MVC

    深入淺析用PHP實(shí)現(xiàn)MVC

    在PHP中使用MVC越來(lái)越流行了,特別是在一些開(kāi)源的框架當(dāng)中。接下來(lái)通過(guò)本文給大家介紹PHP實(shí)現(xiàn)MVC的相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • PHP使用imagick讀取PDF生成png縮略圖的兩種方法

    PHP使用imagick讀取PDF生成png縮略圖的兩種方法

    這篇文章主要介紹了PHP使用imagick讀取PDF第一頁(yè)生成png縮略圖的兩種方法,使用了PHP擴(kuò)展php_imagick,需要的朋友可以參考下
    2014-03-03
  • QQ互聯(lián)一鍵登錄審核不通過(guò)的解決方案

    QQ互聯(lián)一鍵登錄審核不通過(guò)的解決方案

    通過(guò)“QQ登錄”,用戶能使用QQ帳號(hào)一鍵登錄接入網(wǎng)站,大大降低了用戶注冊(cè)、登錄的門檻,借助龐大的QQ用戶群,給第三方網(wǎng)站帶來(lái)更多新用戶。已登錄用戶還可以將在第三方網(wǎng)站發(fā)布、分享的信息即時(shí)同步到QQ空間,從而提升網(wǎng)站的訪問(wèn)量和用戶數(shù)。
    2014-09-09
  • PHP實(shí)現(xiàn)的網(wǎng)站目錄掃描索引工具

    PHP實(shí)現(xiàn)的網(wǎng)站目錄掃描索引工具

    本文給大家分享的是一個(gè)基于PHP實(shí)現(xiàn)的網(wǎng)站目錄掃描索引工具的源碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-09-09
  • mantis安裝、配置和使用中的問(wèn)題小結(jié)

    mantis安裝、配置和使用中的問(wèn)題小結(jié)

    這篇文章主要介紹了開(kāi)源PHP缺陷管理平臺(tái)mantis安裝、配置和使用中的問(wèn)題小結(jié),mantis是一個(gè)PHP的開(kāi)源缺陷管理平臺(tái),需要的朋友可以參考下
    2014-07-07
  • PHP include任意文件或URL介紹

    PHP include任意文件或URL介紹

    include和require的用途是包含并運(yùn)行指定的文件。在官方手冊(cè)沒(méi)有說(shuō)明被包含的文件類型,那么PHP到底能不能include一個(gè)非PHP文件呢?
    2014-04-04
  • php開(kāi)發(fā)最強(qiáng)大的IDE編輯的phpstorm 2020.2配置Xdebug調(diào)試的詳細(xì)教程

    php開(kāi)發(fā)最強(qiáng)大的IDE編輯的phpstorm 2020.2配置Xdebug調(diào)試的詳細(xì)教程

    這篇文章主要介紹了php開(kāi)發(fā)最強(qiáng)大的IDE編輯的phpstorm 2020.2配置Xdebug調(diào)試,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • CodeIgniter配置之config.php用法實(shí)例分析

    CodeIgniter配置之config.php用法實(shí)例分析

    這篇文章主要介紹了CodeIgniter配置之config.php用法,結(jié)合實(shí)例形式詳細(xì)的分析了CodeIgniter中配置文件config.php的參數(shù)含義及具體使用技巧,需要的朋友可以參考下
    2016-01-01

最新評(píng)論

唐山市| 吴川市| 南昌市| 公安县| 通许县| 云霄县| 石家庄市| 二连浩特市| 宜君县| 城步| 钦州市| 新乡县| 衡水市| 宁南县| 舟山市| 仲巴县| 四会市| 唐海县| 花垣县| 白山市| 昌都县| 辽阳市| 腾冲县| 彩票| 万州区| 三江| 宜兴市| 全州县| 凤山市| 金湖县| 桂平市| 米脂县| 体育| 漳州市| 阳东县| 同仁县| 朝阳市| 栖霞市| 紫金县| 龙川县| 革吉县|