Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die zirkuläre verknüpfte PHP-Liste

Einführung in die zirkuläre verknüpfte PHP-Liste

巴扎黑
巴扎黑Original
2017-09-18 10:05:261010Durchsuche

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 vonEinführung in die zirkuläre verknüpfte PHP-Liste. 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