婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php使用環形鏈表解決約瑟夫問題完整示例

php使用環形鏈表解決約瑟夫問題完整示例

熱門標簽:桂陽公司如何做地圖標注 太原400電話申請流程 電信外呼系統多少錢一個月 萍鄉商鋪地圖標注 宿州正規外呼系統軟件 企業400電話辦理多少費用 神龍斗士電話機器人 合肥企業外呼系統線路 代理打電話機器人

本文實例講述了php使用環形鏈表解決約瑟夫問題。分享給大家供大家參考,具體如下:

約瑟夫問題:

Josephu問題為:設編號為1,2,...n的n個人圍坐一圈,約定編號為k(1=k=n)的人從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生一個出隊編號的序列。并求出最后出列的人是哪個?

PHP實現環形鏈表以及約瑟夫問題的解決:

/**
 * 鏈表結構
 */
class Child{
  public $no;
  public $next=null;
  public function __construct($no=null){
    $this->no = $no;
  }
}
/**
 * 鏈表操作
 */
class CycleLink{
  private $nodeNum = 0;
  /**
   * 添加節點
   */
  public function addNode($head,$node)
  {
    $currentNode = $head;
    while ($currentNode->next!=null  $currentNode->next!=$head) {
      $currentNode = $currentNode->next;
    }
    $currentNode->next = $node;
    $currentNode->next->next = $head;
    $this->nodeNum++;
  }
  /**
   * 刪除節點
   */
  public function delNode($head,$no)
  {
    $currentNode = $head;
    while ($currentNode->next!=$head) {
      if($currentNode->next->no==$no){
        $currentNode->next = $currentNode->next->next;
        $this->nodeNum--;
        break;
      }
      $currentNode = $currentNode->next;
    }
  }
  /**
   * 獲取節點數量
   */
  public function getNodeNum(){
    return $this->nodeNum;
  }
  /**
   * 查找節點
   */
  public function findNode($head,$no){
    $node = null;
    $currentNode = $head;
    while ($currentNode->next!=$head) {
      if($currentNode->next->no==$no){
        $node = $currentNode->next;
        break;
      }
      $currentNode = $currentNode->next;
    }
    return $node;
  }
  public function getNextNode($head,$node){
    if($node->next==$head){
      return $node->next->next;
    }
    return $node->next;
  }
  /**
   * 顯示節點
   */
  public function showNode($head)
  {
    echo "br/>br/>";
    $currentNode = $head;
    while ($currentNode->next!=$head){
      $currentNode = $currentNode->next;
      echo '第 '.$currentNode->no.' 名小孩br/>';
    }
  }
}
/*
//創建一個head頭,該head 只是一個頭,不放入數據
$head     = new Child();
$childList   = new CycleLink();
$child_1   = new Child(1);
$child_2   = new Child(2);
$child_3   = new Child(3);
$child_4   = new Child(4);
$childList->addNode($head,$child_1);
$childList->addNode($head,$child_2);
$childList->addNode($head,$child_3);
$childList->addNode($head,$child_4);
$childList->showNode($head);
echo "pre>";
var_dump($head);
$findNode = $childList->findNode($head,3);
echo "pre>";
var_dump($findNode);
$childList->delNode($head,2);
$childList->showNode($head);
echo $childList->getNodeNum();
exit();
*/
/**
 * 約瑟夫問題
 * 設編號為1,2,...n的n個人圍坐一圈,約定編號為k(1=k=n)的人從1開始報數,數到m的那個人出列,
 * 它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生一個出隊編號的序列。
 * 并求出最后出列的人是哪個?
 */
class Josephu{
  private $head;
  private $childList;
  private $k;
  private $m;
  private $n;
  public function __construct($n,$k,$m){
    $this->k = $k;
    $this->m = $m;
    $this->n = $n;
    $this->createList($n);  // 創建小孩
    echo "br/>br/>當前有 {$n} 個小孩,從第 {$k} 個小孩開始報數,數到 {$m} 退出br/>br/>";
  }
  // 數數
  public function exec(){
    $currentNode = $this->childList->findNode($this->head,$this->k);  // 獲取第一個開始報數的人
    $_num = 0;  // 當前數到的值
    $surplus_num = $this->n;
    // 開始報數
    while ($surplus_num>1) {  // 只要人數大于1,就繼續報數
      // 當前報數值
      $_num++;
      $nextNode = $this->childList->getNextNode($this->head,$currentNode);
      // 數至第m個數,然后將其移除。報數恢復到0,重新循環。
      if( $_num==$this->m ){
        $_num = 0;
        $surplus_num--;
        // 當前小孩退出
        $this->childList->delNode($this->head,$currentNode->no);
        echo 'br/>退出小孩編號:' . $currentNode->no;
      }
      // 移動到下一個小孩
      $currentNode = $nextNode;
    }
    echo 'br/>最后一個小孩編號:' . $currentNode->no;
  }
  // 創建小孩
  private function createList($n){
    $this->childList = new CycleLink();
    $this->head = new Child();
    for ($i=1;$i=$n;$i++){
      $node = new Child($i);
      $this->childList->addNode($this->head,$node);
    }
    $this->childList->showNode($this->head);
  }
}
$josephu = new Josephu(4, 1, 2);
$josephu->exec();

運行結果:

第 1 名小孩
第 2 名小孩
第 3 名小孩
第 4 名小孩


當前有 4 個小孩,從第 1 個小孩開始報數,數到 2 退出

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數學運算技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP+Redis鏈表解決高并發下商品超賣問題(實現原理及步驟)
  • python環形單鏈表的約瑟夫問題詳解
  • C語言基于循環鏈表解決約瑟夫環問題的方法示例
  • java基于雙向環形鏈表解決丟手帕問題的方法示例
  • php基于環形鏈表解決約瑟夫環問題示例
  • Java編程刪除鏈表中重復的節點問題解決思路及源碼分享
  • C語言解字符串逆序和單向鏈表逆序問題的代碼示例
  • Java采用循環鏈表結構求解約瑟夫問題
  • Leetcode常見鏈表問題及代碼示例

標簽:衡陽 白銀 崇左 鄂州 綏化 辛集 太原 廊坊

巨人網絡通訊聲明:本文標題《php使用環形鏈表解決約瑟夫問題完整示例》,本文關鍵詞  php,使用,環形,鏈表,解決,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php使用環形鏈表解決約瑟夫問題完整示例》相關的同類信息!
  • 本頁收集關于php使用環形鏈表解決約瑟夫問題完整示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美刺激午夜性久久久久久久| 国产精品丝袜久久久久久app| 日韩午夜电影在线观看| 亚洲柠檬福利资源导航| 99国产精品久久| 久久综合国产精品| 国内一区二区视频| 久久久久久久久99精品| 国产精品99久久久久久似苏梦涵| 精品粉嫩aⅴ一区二区三区四区| 亚洲国产一区视频| 欧美日韩一区国产| 午夜精品成人在线视频| 亚洲精品日日夜夜| 91女厕偷拍女厕偷拍高清| 亚洲女性喷水在线观看一区| 欧美高清你懂得| 狠狠久久亚洲欧美| 蜜桃视频第一区免费观看| 欧美久久久久免费| 亚洲成人激情av| 欧美精品一二三| 久久99热这里只有精品| 精品视频999| 99久久99久久精品免费观看 | 精品欧美乱码久久久久久 | 日韩中文字幕不卡| www国产成人免费观看视频 深夜成人网| 国产91在线看| 狠狠狠色丁香婷婷综合久久五月| 色婷婷久久99综合精品jk白丝| 国产自产高清不卡| 久久久噜噜噜久久中文字幕色伊伊 | 久久国产综合精品| 欧美精品日日鲁夜夜添| 国产精品乱人伦| 在线不卡中文字幕| 99久久精品一区二区| 亚洲成av人片www| 国产尤物一区二区| 欧美麻豆精品久久久久久| 成人国产精品免费观看视频| 夜夜嗨av一区二区三区网页 | 99精品久久99久久久久| 日韩和的一区二区| 色哟哟国产精品| 国产一区二区精品在线观看| 亚洲高清免费观看高清完整版在线观看 | 一区二区在线观看视频在线观看| 在线电影一区二区三区| av色综合久久天堂av综合| 精品国产髙清在线看国产毛片| 国产精品一品二品| 人妖欧美一区二区| 伊人性伊人情综合网| 久久综合色播五月| 欧美一区二区三区日韩| 欧洲日韩一区二区三区| 国产一区二区三区av电影| 亚洲精品国产精华液| 中文字幕中文字幕一区二区| 精品国产一区二区三区av性色 | 91网站在线播放| 狠狠狠色丁香婷婷综合久久五月| 日本成人中文字幕| 精品国产91九色蝌蚪| 欧美一区二区私人影院日本| 日本韩国精品一区二区在线观看| 国产99久久久国产精品免费看 | 亚洲综合小说图片| 日韩欧美色电影| 欧美日韩欧美一区二区| 国产成人自拍网| 国产成人午夜高潮毛片| 国产精品久久久久久久久免费相片| 久久99蜜桃精品| 精品成人a区在线观看| 美女视频一区在线观看| 蜜臀精品久久久久久蜜臀| 午夜一区二区三区视频| 首页国产丝袜综合| 偷窥少妇高潮呻吟av久久免费| 亚洲成人在线观看视频| 亚洲电影一级片| 亚洲国产成人av网| 日韩黄色小视频| 欧美韩国日本综合| 中文字幕高清一区| 国产精品久久国产精麻豆99网站| 日本视频中文字幕一区二区三区| 欧美一区二区三区视频| 欧美三级日韩三级| 亚洲女同女同女同女同女同69| 成人一二三区视频| 国产亚洲污的网站| 免费视频一区二区| 欧美三级日韩三级| 亚洲国产精品久久人人爱蜜臀 | 欧美大白屁股肥臀xxxxxx| 午夜伦欧美伦电影理论片| 在线观看日韩av先锋影音电影院| 亚洲国产精华液网站w| 国产风韵犹存在线视精品| 精品国产一区二区三区久久影院| 开心九九激情九九欧美日韩精美视频电影 | 久久婷婷国产综合国色天香| 久久精品99国产精品日本| 欧美va天堂va视频va在线| 久久精品国产一区二区三| 日韩一区二区三| 麻豆国产精品一区二区三区 | 国产精品国产三级国产aⅴ入口| 成人网在线播放| 最新不卡av在线| 欧美人牲a欧美精品| 久久黄色级2电影| 国产喷白浆一区二区三区| 波多野结衣中文字幕一区二区三区| 亚洲欧洲韩国日本视频| 色噜噜夜夜夜综合网| 亚洲国产cao| 精品福利在线导航| jizzjizzjizz欧美| 亚洲国产精品久久久久婷婷884| 欧美精品丝袜中出| 国内不卡的二区三区中文字幕 | 亚洲在线免费播放| 91精品国产综合久久福利| 国产一区二区三区| 亚洲视频小说图片| 懂色av中文字幕一区二区三区| 最新久久zyz资源站| 欧美日韩国产天堂| 国产成人免费在线视频| 一区二区三区**美女毛片| 日韩欧美一卡二卡| 午夜欧美电影在线观看| 久久九九久久九九| 欧美吻胸吃奶大尺度电影| 国产一区二三区| 亚洲.国产.中文慕字在线| 中文字幕乱码日本亚洲一区二区 | 欧美日韩在线亚洲一区蜜芽| 国精产品一区一区三区mba桃花| 国产精品久久三区| 狠狠色丁香久久婷婷综| 亚洲第一福利视频在线| 久久―日本道色综合久久| 91一区二区三区在线观看| 奇米888四色在线精品| 亚洲人被黑人高潮完整版| 久久伊人蜜桃av一区二区| 在线成人午夜影院| 欧美亚一区二区| 91在线一区二区三区| 国产成人免费9x9x人网站视频| 亚洲高清一区二区三区| 综合色中文字幕| 欧美韩国日本不卡| 日韩欧美的一区二区| 欧美在线三级电影| 色综合久久精品| 99精品欧美一区二区蜜桃免费 | 亚洲伊人色欲综合网| 欧美韩国日本一区| 久久综合九色综合欧美亚洲| 欧美一区二区三区四区高清| 亚洲午夜精品17c| 日韩欧美一二三四区| 亚洲激情校园春色| 国产欧美一区二区三区在线老狼| 色综合久久综合中文综合网| 国产综合成人久久大片91| 精品久久久久久最新网址| 在线播放中文一区| 欧美日韩国产一区| 欧美区在线观看| 欧美性极品少妇| 欧美性高清videossexo| 国产成人免费视频一区| 久久精品国产一区二区| 日本人妖一区二区| 日韩黄色一级片| 美国毛片一区二区三区| 亚洲成a人片在线观看中文| 亚洲国产精品久久久久秋霞影院| 夜夜爽夜夜爽精品视频| 亚洲高清视频在线| 日本欧美加勒比视频| 久久国产精品一区二区| 国产麻豆精品在线| 成人免费福利片| 色婷婷综合久久久中文一区二区| 91福利区一区二区三区| 欧美久久久久久久久| 欧美一级欧美三级在线观看| 精品精品国产高清a毛片牛牛| 久久综合色8888| 亚洲免费在线观看视频| 日韩精品免费专区|