Partager la méthode d'implémentation de liste chaînée circulaire en PHP

黄舟
Libérer: 2023-03-16 07:58:01
original
1251 Les gens l'ont consulté

Cet article présente principalement la méthode d'implémentation de la liste chaînée circulaire PHP, et analyse la définition, la création et le parcours de la liste chaînée circulaire PHP ainsi que d'autres techniques et précautions de fonctionnement sous la forme d'exemples spécifiques. Les amis dans le besoin peuvent se référer à cet article.

L'exemple décrit la méthode d'implémentation de la liste chaînée circulaire PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Une liste chaînée circulaire est une structure de stockage liée, similaire à une liste chaînée unique. La différence est que le nœud de queue de la liste chaînée circulaire pointe vers le nœud de tête.

Formant ainsi un anneau,

La liste chaînée en anneau est une structure de stockage très flexible qui peut résoudre de nombreux problèmes pratiques, tels que le problème de distribution de cartes du magicien et le problème de Joseph

Utilisez une liste chaînée circulaire pour résoudre le problème. Ce qui suit est un exemple complet de liste chaînée circulaire, implémenté à l'aide de PHP (voir le didacticiel sur l'algorithme PHP du professeur Han Shunping)


/** 
 *  环形链表的实现
 *  
 */
class child
{
  public $no;//序号
  public $next;//指向下个节点的指针
  public function __construct($no=''){
    $this ->no = $no;
  }
}
/**
 * 创建一个环形链表
 * @param $first null  链表的头节点
 * @param $num  integer 需要添加节点的数量
 */
function create(&$first,$num)
{
  $cur = null;
  for ($i=0;$i<$num;$i++)
  {
    $child = new child($i+1);
    if ($i==0)
    {  
      $first = $child;
      $first->next = $first;//将链表的尾节点指向头节点 形成环形链表
      $cur = $first;//链表的头节点不能动 需要交给一个临时变量
    } else {
      $cur->next = $child;
      $cur->next->next = $first;//将链表的尾节点指向头节点 形成环形链表
      $cur = $cur->next;
    }
  }
}
/**
 * 遍历环形链表
 * @param $first object 环形链表的头
 * 
 */
function show ($first)
{
  //头节点不能动,交个一个临时变量
  $cur = $first;
  while ($cur->next!=$first)//当$cur->next==$first说明到了链表的最后一个节点
  {
    echo $cur->no.&#39;</br>&#39;;
    $cur = $cur->next;
  }
  //当退出循环的时候$cur->next=$first 刚好会忽略当前节点本身的遍历 所以退出的时候还要输出一下 否则会少遍历一个节点
  echo $cur->no;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!