📅  最后修改于: 2023-12-03 15:39:38.290000             🧑  作者: Mango
链表是一种常见的数据结构,它在计算机科学中广泛应用。链表是由节点组成的数据对象序列,其中每个节点包含一个值和一个指向下一个节点的指针。在 PHP 中,我们可以使用类来创建链表。
我们首先要实现一个表示节点的类。节点应该具有一个值和一个指向下一个节点的指针。下面是一个简单的节点类示例:
class Node {
public $value;
public $next;
public function __construct($value) {
$this->value = $value;
$this->next = null;
}
}
在这个类中,我们定义了一个 $value
属性用于存储节点的值,还定义了一个 $next
属性用于指向链表中的下一个节点。我们还实现了一个构造函数来初始化节点值和下一个节点指针。
接下来,我们要实现一个表示链表的类。链表类应该具有一个指向链表头部的指针,并且应该能够添加、删除和遍历节点。下面是一个简单的链表类示例:
class LinkedList {
public $head;
public function __construct() {
$this->head = null;
}
public function add($value) {
$node = new Node($value);
if ($this->head === null) {
$this->head = $node;
} else {
$current = $this->head;
while ($current->next !== null) {
$current = $current->next;
}
$current->next = $node;
}
}
public function remove($value) {
if ($this->head === null) {
return;
}
if ($this->head->value === $value) {
$this->head = $this->head->next;
} else {
$current = $this->head;
while ($current->next !== null && $current->next->value !== $value) {
$current = $current->next;
}
if ($current->next !== null) {
$current->next = $current->next->next;
}
}
}
public function traverse() {
$current = $this->head;
while ($current !== null) {
echo $current->value . " ";
$current = $current->next;
}
}
}
这个类有一个 $head
属性,用于指向链表的第一个节点。它还实现了 add()
、remove()
和 traverse()
方法来添加、删除和遍历节点。
现在我们已经实现了一个链表类,可以通过以下方式使用它:
$ll = new LinkedList();
$ll->add(10);
$ll->add(20);
$ll->add(30);
$ll->traverse(); // 输出 10 20 30
$ll->remove(20);
$ll->traverse(); // 输出 10 30
在这个例子中,我们首先创建了一个空链表。然后,我们通过 add()
方法添加了一些节点,并使用 traverse()
方法遍历整个链表。最后,我们使用 remove()
方法删除了一个节点,并再次使用 traverse()
方法遍历链表。