ホームページ >バックエンド開発 >PHPチュートリアル >ジョセフ リング問題 (循環リンク リスト)

ジョセフ リング問題 (循環リンク リスト)

WBOY
WBOYオリジナル
2016-07-25 09:01:35966ブラウズ
php算法
  1. header("content-type:text/html;charset=utf-8");
  2. class Child{
  3. public $no;
  4. public $next=null;
  5. public function __construct( $no){
  6. $this->no=$no;
  7. }
  8. }
  9. function addChild($n,&$first){ //$n は小孩个数,创建环形链表
  10. for($i=0) ;$i $child=new Child($i+1);
  11. if($i==0){
  12. $first=$child;
  13. $cur=$child;
  14. $ cur->next=$cur;
  15. }else{
  16. $cur->next=$child;
  17. $child->next=$first;
  18. $cur=$cur->next;
  19. }
  20. }
  21. }
  22. function showHero($first){
  23. $cur=$first;
  24. while($cur->next!=$first){
  25. echo "
    小孩编号:".$cur-> ;no;
  26. $cur=$cur->next;
  27. }
  28. echo "
    小孩编号:".$cur->no;
  29. }
  30. function countChild($first,$m, $k){
  31. $cur=$first;
  32. for($i=0;$i<$m-1;$i++){
  33. $cur=$cur->next;
  34. }
  35. $j=0;
  36. while($cur!=$cur->next){
  37. if($j==$k-2){
  38. echo "
    出列编号:".$cur->next- >いいえ;
  39. $cur->next=$cur->gt;next->next;
  40. $cur=$cur->next;
  41. $j=0;
  42. }else{
  43. $cur= $cur->next;
  44. $j++;
  45. }
  46. }
  47. echo "
    最終出列编号:".$cur->no;
  48. }
  49. addChild(10,$first);
  50. showHero($first);
  51. echo "
    ";
  52. countChild($first,2,3); //第二个小孩开開始数,数到三出列
  53. ?>
复制代


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。