So implementieren Sie das Löschen und Einfügen von Knoten in einer doppelt verknüpften Liste in PHP

墨辰丷
Freigeben: 2023-03-26 10:02:01
Original
1486 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Methode zum Löschen und Einfügen von Knoten in einer doppelt verknüpften Liste in PHP vor und analysiert die Implementierungstechniken im Zusammenhang mit Knotenoperationen in Form von Beispielen Einzelheiten finden Sie unter

wie folgt:

Übersicht:

Eine doppelt verknüpfte Liste wird auch als doppelt verknüpft bezeichnet Es handelt sich um eine Art verknüpfte Liste. Jeder ihrer Datenknoten enthält zwei Zeiger, die auf den direkten Nachfolger und den direkten Vorgänger zeigen. Daher können Sie ausgehend von jedem Knoten in der doppelt verknüpften Liste problemlos auf dessen Vorgänger- und Nachfolgerknoten zugreifen. Im Allgemeinen erstellen wir eine bidirektionale zirkulär verknüpfte Liste.

Implementierungscode:

<?php 
class node{
  public $prev;
  public $next;
  public $data;
  public function __construct($data,$prev=null,$next=null){
    $this->data=$data;
    $this->prev=$prev;
    $this->next=$next;
  }
}
class doubleLinkList{
  private $head;
  public function __construct()
  {
    $this->head=new node("head",null,null);
  }
  //插入节点
  public function insertLink($data){
    $p=new node($data,null,null);
    $q=$this->head->next;
    $r=$this->head;
    while($q){
      if($q->data>$data){
        $q->prev->next=$p;
        $p->prev=$q->prev;
        $p->next=$q;
        $q->prev=$p;
      }else{
      $r=$q;$q=$q->next;
      }
    }
    if($q==null){
      $r->next=$p;
      $p->prev=$r;
    }
  }
  //从头输出节点
  public function printFromFront(){
    $p=$this->head->next;
    $string="";
    while($p){
    $string.=$string?",":"";
    $string.=$p->data;
    $p=$p->next;
    }
    echo $string."<br>";
  }
  //从尾输出节点
  public function printFromEnd(){
    $p=$this->head->next;
    $r=$this->head;
    while($p){
    $r=$p;$p=$p->next;
    }
    $string="";
    while($r){
      $string.=$string?",":"";
      $string.=$r->data;
      $r=$r->prev;
    }
    echo $string."<br>";
  }
  public function delLink($data){
    $p=$this->head->next;
    if(!$p)
    return;
    while($p){
      if($p->data==$data)
      {
        $p->next->prev=$p->prev;
        $p->prev->next=$p->next;
        unset($p);
        return;
      }
      else{
        $p=$p->next;
      }
    }
    if($p==null)
    echo "没有值为{$data}的节点";
  }
}
$link=new doubleLinkList();
$link->insertLink(1);
$link->insertLink(2);
$link->insertLink(3);
$link->insertLink(4);
$link->insertLink(5);
$link->delLink(3);
$link->printFromFront();
$link->printFromEnd();
$link->delLink(6);
Nach dem Login kopieren

Laufergebnis:

1,2,4,5
5,4,2,1,head
没有值为6的节点
Nach dem Login kopieren

Verwandte Empfehlungen:

JS-Operation DOM-Einfügungsknoten

So implementieren Sie einen DOM-Einfügungsknoten in JS

jQuery-Einfügungsknoten insertAfter und Verschiebungsknoten insertBefore-Nutzungsbeispiele

Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Löschen und Einfügen von Knoten in einer doppelt verknüpften Liste in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!