Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel einer doppelt verknüpften PHP-Liste

Detailliertes Beispiel einer doppelt verknüpften PHP-Liste

*文
*文Original
2017-12-28 09:47:181410Durchsuche

In diesem Artikel werden hauptsächlich die Einführung und Anwendungsbeispiele der doppelt verknüpften PHP-Liste (SplDoublyLinkedList) vorgestellt. Ich hoffe, es hilft allen.

Die doppelt verknüpfte Liste ist eine wichtige lineare Speicherstruktur. Für jeden Knoten in der doppelt verknüpften Liste werden nicht nur seine eigenen Informationen, sondern auch die Adressen der Vorgänger- und Nachfolgerknoten gespeichert.

Die SplDoublyLinkedList-Klasse in PHP SPL stellt Operationen für doppelt verknüpfte Listen bereit.
Die Zusammenfassung der SplDoublyLinkedList-Klasse lautet wie folgt:


SplDoublyLinkedList implements Iterator  , ArrayAccess  , Countable  {
 
  public __construct ( void )
  public void add ( mixed $index , mixed $newval )
  //双链表的头部节点
  public mixed top ( void )
  //双链表的尾部节点
  public mixed bottom ( void )
  //双联表元素的个数
  public int count ( void )
  //检测双链表是否为空
  public bool isEmpty ( void )
 
 
  //当前节点索引
  public mixed key ( void )
  //移到上条记录
  public void prev ( void )
  //移到下条记录
  public void next ( void )
  //当前记录
  public mixed current ( void )
  //将指针指向迭代开始处
  public void rewind ( void )
  //检查双链表是否还有节点
  public bool valid ( void )
 
  //指定index处节点是否存在
  public bool offsetExists ( mixed $index )
  //获取指定index处节点值
  public mixed offsetGet ( mixed $index )
  //设置指定index处值
  public void offsetSet ( mixed $index , mixed $newval )
  //删除指定index处节点
  public void offsetUnset ( mixed $index )
 
  //从双链表的尾部弹出元素
  public mixed pop ( void )
  //添加元素到双链表的尾部
  public void push ( mixed $value )
 
  //序列化存储
  public string serialize ( void )
  //反序列化
  public void unserialize ( string $serialized )
 
  //设置迭代模式
  public void setIteratorMode ( int $mode )
  //获取迭代模式SplDoublyLinkedList::IT_MODE_LIFO (Stack style) SplDoublyLinkedList::IT_MODE_FIFO (Queue style)
  public int getIteratorMode ( void )
 
  //双链表的头部移除元素
  public mixed shift ( void )
  //双链表的头部添加元素
  public void unshift ( mixed $value )
 
}


Es ist auch einfach zu verwenden



$list = new SplDoublyLinkedList();
$list->push('a');
$list->push('b');
$list->push('c');
 
$list->unshift('top');
$list->shift();
 
print_r(array(
  'pop' => $list->pop(),
  'count' => $list->count(),
  'isEmpty' => $list->isEmpty(),
  'bottom' => $list->bottom(),
  'top' => $list->top()
));
 
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
print_r($list->getIteratorMode());
 
for($list->rewind(); $list->valid(); $list->next()) {
  echo $list->current().PHP_EOL;
}
 
print_r($a = $list->serialize());
//print_r($list->unserialize($a));
 
$list->offsetSet(0,'new one');
$list->offsetUnset(0);
print_r(array(
  'offsetExists' => $list->offsetExists(4),
  'offsetGet' => $list->offsetGet(0),
 
));
print_r($list);


Verwandte Empfehlungen:

Detailliertes Beispiel für PHP basierend auf der Mitglieder-Ranking-Funktion, implementiert durch doppelt verknüpfte Listen- und Sortieroperation

Beispiel für eine in PHP implementierte Flip-Operation einer einzelnen verknüpften Liste

Beispiel für eine einfache Implementierung einer zirkulären verknüpften Listenfunktion in PHP

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel einer doppelt verknüpften 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