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