校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

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

php使用環(huán)形鏈表解決約瑟夫問題完整示例

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

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

約瑟夫問題:

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

PHP實現(xiàn)環(huán)形鏈表以及約瑟夫問題的解決:

/**
 * 鏈表結構
 */
class Child{
  public $no;
  public $next=null;
  public function __construct($no=null){
    $this->no = $no;
  }
}
/**
 * 鏈表操作
 */
class CycleLink{
  private $nodeNum = 0;
  /**
   * 添加節(jié)點
   */
  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++;
  }
  /**
   * 刪除節(jié)點
   */
  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;
    }
  }
  /**
   * 獲取節(jié)點數(shù)量
   */
  public function getNodeNum(){
    return $this->nodeNum;
  }
  /**
   * 查找節(jié)點
   */
  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;
  }
  /**
   * 顯示節(jié)點
   */
  public function showNode($head)
  {
    echo "br/>br/>";
    $currentNode = $head;
    while ($currentNode->next!=$head){
      $currentNode = $currentNode->next;
      echo '第 '.$currentNode->no.' 名小孩br/>';
    }
  }
}
/*
//創(chuàng)建一個head頭,該head 只是一個頭,不放入數(shù)據(jù)
$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開始報數(shù),數(shù)到m的那個人出列,
 * 它的下一位又從1開始報數(shù),數(shù)到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);  // 創(chuàng)建小孩
    echo "br/>br/>當前有 {$n} 個小孩,從第 {$k} 個小孩開始報數(shù),數(shù)到 {$m} 退出br/>br/>";
  }
  // 數(shù)數(shù)
  public function exec(){
    $currentNode = $this->childList->findNode($this->head,$this->k);  // 獲取第一個開始報數(shù)的人
    $_num = 0;  // 當前數(shù)到的值
    $surplus_num = $this->n;
    // 開始報數(shù)
    while ($surplus_num>1) {  // 只要人數(shù)大于1,就繼續(xù)報數(shù)
      // 當前報數(shù)值
      $_num++;
      $nextNode = $this->childList->getNextNode($this->head,$currentNode);
      // 數(shù)至第m個數(shù),然后將其移除。報數(shù)恢復到0,重新循環(huán)。
      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;
  }
  // 創(chuàng)建小孩
  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 個小孩開始報數(shù),數(shù)到 2 退出

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

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

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

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

巨人網絡通訊聲明:本文標題《php使用環(huán)形鏈表解決約瑟夫問題完整示例》,本文關鍵詞  php,使用,環(huán)形,鏈表,解決,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php使用環(huán)形鏈表解決約瑟夫問題完整示例》相關的同類信息!
  • 本頁收集關于php使用環(huán)形鏈表解決約瑟夫問題完整示例的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    7777精品伊人久久久大香线蕉经典版下载 | 欧美三区在线观看| av一区二区三区四区| 国产在线精品一区二区夜色 | 在线视频亚洲一区| 91香蕉视频黄| 欧美撒尿777hd撒尿| 欧美日韩午夜在线| 91精品久久久久久久91蜜桃| 91精品婷婷国产综合久久竹菊| 正在播放一区二区| 精品成人a区在线观看| 精品粉嫩aⅴ一区二区三区四区| 精品国产乱码久久久久久久| 久久色在线观看| 中文字幕欧美日本乱码一线二线 | 在线观看欧美黄色| 91精品婷婷国产综合久久竹菊| 日韩精品一区二区三区在线观看 | 亚洲蜜臀av乱码久久精品| 亚洲二区在线观看| 久88久久88久久久| 99视频精品全部免费在线| 欧美视频中文一区二区三区在线观看| 欧美日韩一区二区在线视频| 日韩精品一区国产麻豆| 国产精品久久久久久久裸模 | 欧美岛国在线观看| 中文字幕第一页久久| 亚洲国产综合人成综合网站| 久久综合综合久久综合| 波多野结衣的一区二区三区| 欧美性大战xxxxx久久久| 日韩欧美一区二区视频| 亚洲欧洲av在线| 日韩黄色免费电影| 成人免费视频网站在线观看| 欧美福利视频导航| 中文字幕一区二区三区在线不卡 | 亚洲一线二线三线久久久| 久久国产精品99久久久久久老狼| 成人污视频在线观看| 7777精品久久久大香线蕉 | 91精品欧美福利在线观看| 日本一区二区成人| 蜜桃一区二区三区在线| 91视频在线观看| 精品国产一区a| 亚洲电影在线免费观看| bt欧美亚洲午夜电影天堂| 日韩视频免费观看高清完整版 | 另类综合日韩欧美亚洲| 91蜜桃视频在线| 久久伊99综合婷婷久久伊| 亚洲444eee在线观看| 91麻豆免费观看| 中文字幕av一区二区三区高| 久久国产夜色精品鲁鲁99| 欧美日韩亚洲高清一区二区| 亚洲免费在线播放| 91色九色蝌蚪| 1024国产精品| aaa欧美色吧激情视频| 欧美国产激情一区二区三区蜜月| 蜜臀av国产精品久久久久| 欧美肥胖老妇做爰| 五月天一区二区三区| 91福利在线导航| 国产精品久久久久久福利一牛影视 | 国产在线播放一区二区三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | proumb性欧美在线观看| 日韩一区二区三区观看| 亚洲成a人片综合在线| 成人激情综合网站| 久久久亚洲高清| 久久99最新地址| 91精品国产综合久久精品| 亚洲午夜精品一区二区三区他趣| gogogo免费视频观看亚洲一| 国产香蕉久久精品综合网| 日本午夜精品视频在线观看| 白白色亚洲国产精品| 国产日韩欧美高清| 国产成人av网站| 久久天堂av综合合色蜜桃网| 久久国产精品区| www国产精品av| 精品一区二区精品| 久久亚洲精品小早川怜子| 另类小说一区二区三区| 欧美高清视频不卡网| 日本视频中文字幕一区二区三区| 欧美久久久久久久久久| 伊人性伊人情综合网| 欧美日韩亚洲综合一区| 全部av―极品视觉盛宴亚洲| 在线不卡一区二区| 麻豆成人免费电影| www国产成人| 成人国产亚洲欧美成人综合网| 国产精品成人午夜| 99久久久久久| 乱中年女人伦av一区二区| www国产精品av| 波多野结衣在线aⅴ中文字幕不卡| 国产精品久久久久久久久免费相片 | 亚洲一区二区三区小说| 欧美剧情片在线观看| 免费看日韩a级影片| 欧美精品一区二区三| 国产成人精品一区二| 国产精品国产自产拍高清av| 色88888久久久久久影院野外| 亚洲国产视频直播| 337p粉嫩大胆色噜噜噜噜亚洲 | 亚洲另类色综合网站| 日本韩国欧美国产| 麻豆91在线观看| 亚洲欧美自拍偷拍| 欧美日韩视频一区二区| 国模一区二区三区白浆| 亚洲精品老司机| 日韩欧美精品三级| 色综合中文字幕国产| 五月婷婷综合网| 亚洲国产精品黑人久久久| 欧美中文字幕久久| 成人综合婷婷国产精品久久蜜臀 | 亚洲视频一区在线| 制服丝袜亚洲播放| 成人精品一区二区三区中文字幕| 亚洲九九爱视频| 欧美一区二区三区成人| 成人黄色在线看| 久久精品免费观看| 国产情人综合久久777777| 欧美人狂配大交3d怪物一区| 成人av资源网站| 美日韩一级片在线观看| 亚洲欧美日韩国产手机在线 | 亚洲电影视频在线| 欧美国产一区二区| 久久五月婷婷丁香社区| 欧美色国产精品| 成人视屏免费看| 成人精品国产一区二区4080 | 精品日韩欧美在线| 欧美在线色视频| 国产激情一区二区三区| 美女免费视频一区二区| 亚洲午夜电影网| 亚洲免费观看高清完整| 亚洲精品乱码久久久久久久久| 国产三级三级三级精品8ⅰ区| 在线不卡免费av| 成人sese在线| 蜜桃视频在线观看一区二区| 亚洲18色成人| 亚洲福利一区二区| 亚洲黄色在线视频| 亚洲一区二区偷拍精品| 亚洲精品免费一二三区| 国产精品久久一卡二卡| 国产精品美女久久久久高潮| 久久这里都是精品| 久久欧美一区二区| 日韩三级视频在线看| 久久精品网站免费观看| 精品成人私密视频| 精品国产91久久久久久久妲己| 欧美一级精品大片| 91精品国产91久久综合桃花| 91精品国产麻豆国产自产在线 | 亚洲一区日韩精品中文字幕| 亚洲少妇最新在线视频| 亚洲另类在线视频| 亚洲一区二区三区四区在线免费观看| 一区二区三区四区高清精品免费观看| 亚洲欧美电影一区二区| 亚洲免费电影在线| 精品一区二区三区免费观看| 国产精品99久| 99热99精品| 欧美三区在线观看| 日韩免费高清视频| 久久久久国产精品麻豆| 亚洲综合清纯丝袜自拍| 日韩电影一区二区三区| 国产在线看一区| av色综合久久天堂av综合| 一本一本久久a久久精品综合麻豆| 日本丶国产丶欧美色综合| 欧美日精品一区视频| 国产欧美日韩精品a在线观看| 亚洲欧洲99久久| 免费观看一级欧美片| 成人动漫一区二区| 欧美一卡在线观看| 亚洲欧美综合另类在线卡通|