PHP实现的基于单向链表办理约瑟夫环题目示例
发布时间:2021-03-05 19:11:26 所属栏目:编程 来源:网络整理
导读:本篇章节讲授PHP实现的基于单向链表办理约瑟夫环题目。供各人参考研究详细如下: 约瑟夫环题目: 在罗马人霸占乔塔帕特后,39 个犹太人与Josephus及他的伴侣躲到一个洞中,39个犹太人抉择甘愿死也不要被仇人抓到,于是抉择了一个自杀方法,41小我私人
本篇章节讲授PHP实现的基于单向链表办理约瑟夫环题目。分享给各人供各人参考,详细如下: 约瑟夫环题目:在罗马人霸占乔塔帕特后,39 个犹太人与Josephus及他的伴侣躲到一个洞中,39个犹太人抉择甘愿死也不要被仇人抓到,于是抉择了一个自杀方法,41小我私人排成一个圆圈,由第1小我私人开始报数,每报数到第3人该人就必需自杀,然后再由下一个从头报数,直到全部人都自杀身亡为止。然而Josephus 和他的伴侣并不想遵从。起首从一小我私人开始,越过k-2小我私人(由于第一小我私人已经被越过),并杀掉第k小我私人。接着,再越过k-1小我私人,并杀掉第k小我私人。这个进程沿着圆圈一向举办,直到最终只剩下一小我私人留下,这小我私人就可以继承在世。题目是,给定了和,一开始要站在什么处所才气停止被处决?Josephus要他的伴侣先冒充遵从,他将伴侣与本身布置在第16个与第31个位置,于是逃过了这场衰亡游戏。更多的相同题目是:n小我私人围成圈,依次编号为1,2,..,n,此刻从1号开始依次报数,当报到m时,报m的人退出,下一小我私人从头从1报起,轮回下去,问最后剩下那小我私人的编号是几多? 代码实现:value = $value; } function addNode($node,$value){ $lastNode = findLastNode($node); $nextNode = new Node(); $nextNode->value = $value; $lastNode->nextNode = $nextNode; } /* 找到最后的节点 */ function findLastNode($node){ if(empty($node->nextNode)){ return $node; }else{ return findLastNode($node->nextNode); } } /* 删除节点 必需head为引用传值 */ function deleteNode(&$head,$node,$m,$k = 1){ if($k + 1 == $m){ if($node->nextNode == $head){ $node->nextNode = $node->nextNode->nextNode; $head = $node->nextNode; return $node->nextNode; }else{ $node->nextNode = $node->nextNode->nextNode; return $node->nextNode; } }else{ return deleteNode($head,$node->nextNode,++$k); } } /* 节点数 */ function countNode($head,$count = 1){ if($node->nextNode == $head){ return $count; }else{ return countNode($head,++$count); } } function printNode($head,$node){ echo $node->value . ' '; if($node->nextNode == $head) return; printNode($head,$node->nextNode); } function show($data){ echo ''; print_r($data); echo ''; } $head = new Node(); create($head,1); addNode($head,2); addNode($head,3); addNode($head,4); addNode($head,5); addNode($head,6); addNode($head,7); addNode($head,8); addNode($head,9); addNode($head,10); addNode($head,11); addNode($head,12); $lastNode = findLastNode($head); $lastNode->nextNode = $head; $count = countNode($head,$head); $tmpHead = $head; while ($count > 2) { $tmpHead = deleteNode($head,$tmpHead,3,1); $count = countNode($head,$head); } printNode($head,$head); 更多关于PHP相干内容感乐趣的读者可查察本站专题:《》、《》、《》、《》及《》 但愿本文所述对各人PHP措施计划有所辅佐。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |