📜  PHP中的 SplDoublyLinkedList

📅  最后修改于: 2022-05-13 01:56:53.484000             🧑  作者: Mango

PHP中的 SplDoublyLinkedList

双链表是一个包含指向下一个和前一个节点的链接的列表。双链表 (DLL) 包含一个额外的指针,通常称为前一个指针,以及单链表中的下一个指针和数据。与遍历只是一种方式的单链表不同,双向链表允许两种方式的遍历。

以下是理解双向链表概念的重要术语:

  • Link :链表的每个节点都可以存储一个指向另一个元素的指针,称为Link
  • Next :链表的每个节点都包含一个指向名为Next的下一个节点的链接。
  • Prev :链表的每个节点都包含一个指向名为Prev的前一个节点的链接。

您可以参考关于双向链表(简介)的文章来详细了解双向链表。

SplDoublyLinkedList类是一个PHP库类,它提供了PHP中双向链表的主要功能。

下面是 SplDoublyLinkedList 类的一些基本功能:

  • push():该函数用于在双向链表的末尾插入一个新节点。
    语法
    list_name.push(value);
    

    这将把推到列表list_name的末尾。

  • pop():该函数用于从双向链表的末尾删除一个节点。
    语法
    list_name.pop()
    

    这将从列表list_name中删除最后一个节点。

  • top():该函数用于选择双向链表末尾的节点。
    语法
    list_name.top()
    

    这将返回列表list_name中的最后一个节点。

  • bottom():该函数用于选择双向链表开头的节点。
    语法
    list_name.bottom()
    

    这将返回列表list_name开头的节点。

  • add():此函数用于在双向链表中的指定索引处插入一个新值,这也会导致该索引处的前一个值(以及所有后续值)在列表中向上移动。
    语法
    list_name.add('index', "value");
    

    这将在列表list_name中的位置索引处添加

  • count():此函数用于计算给定双向链表中存在的元素数。
    语法
    list.count()
    

    这将返回列表list_name中存在的元素总数的计数。

下面的程序说明了上述函数来创建和使用双向链表:
程序:

push('geeks');
$dlist->push('for');
$dlist->push('practice');
  
// Displaying the list
echo "Original List : ";
for ($dlist->rewind(); $dlist->valid(); $dlist->next()) {
    echo $dlist->current()." ";
}
  
// Deleting element from the end of the list
$dlist->pop();
  
// Adding a new element at specific index
// Add 'code' at index 2
$dlist->add(2, "code");
  
// Displaying the updated list
echo "\n\nUpdated List : ";
for ($dlist->rewind(); $dlist->valid(); $dlist->next()) {
    echo $dlist->current()." ";
}
  
// Printing the count of nodes
echo "\n\nCount = " . $dlist->count() . "\n";
  
// Printing the node at top of the list
echo "Top = ". $dlist->top() . "\n";
  
// Printing the node at bottom of the list
echo "Bottom = " . $dlist->bottom() . "\n";
  
?>

输出:

Original List : geeks for practice 

Updated List: geeks for code 

Count = 3
Top = code
Bottom = geeks