Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie die Methode zur Implementierung einer zirkulären verknüpften Liste in PHP

Teilen Sie die Methode zur Implementierung einer zirkulären verknüpften Liste in PHP

黄舟
黄舟Original
2017-09-16 09:06:211218Durchsuche

In diesem Artikel wird hauptsächlich die Implementierungsmethode der PHP-zirkulären verknüpften Liste vorgestellt und die Definition, Erstellung und Durchquerung der PHP-zirkulären verknüpften Liste sowie andere Betriebstechniken und Vorsichtsmaßnahmen in Form spezifischer Beispiele analysiert

Das Beispiel beschreibt die Implementierungsmethode der PHP-zirkulären verknüpften Liste. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Eine zirkulär verknüpfte Liste ist eine verknüpfte Speicherstruktur, ähnlich einer einfach verknüpften Liste. Der Unterschied besteht darin, dass der Endknoten der zirkulär verknüpften Liste auf den Kopfknoten zeigt.

So entsteht ein Ring

Die ringverknüpfte Liste ist eine sehr flexible Speicherstruktur, die viele praktische Probleme lösen kann, wie zum Beispiel das Problem des Kartenhandelns des Magiers und das Joseph-Problem

Verwenden Sie eine zirkuläre verknüpfte Liste, um das Problem zu lösen. Das Folgende ist ein vollständiges Beispiel für eine zirkuläre verknüpfte Liste, das mit PHP implementiert wurde (siehe Tutorial zum PHP-Algorithmus von Lehrer 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;
}

Das obige ist der detaillierte Inhalt vonTeilen Sie die Methode zur Implementierung einer zirkulären verknüpften Liste in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn