以下是使用PHP实现链表操作的示例代码:
class ListNode {
public $val; // 节点的值
public $next; // 指向下一个节点的指针
public function __construct($val = 0) {
$this->val = $val;
$this->next = null;
}
}
class LinkedList {
public $head; // 链表的头节点
public function __construct() {
$this->head = null; // 初始化链表为空
}
// 在链表末尾添加一个节点
public function append($val): void {
$newNode = new ListNode($val);
// 如果链表为空,将新节点设置为头节点
if ($this->head == null) {
$this->head = $newNode;
} else {
// 找到链表末尾节点,并将新节点连接到末尾节点
$current = $this->head;
while ($current->next != null) {
$current = $current->next;
}
$current->next = $newNode;
}
}
// 在链表开头插入一个节点
public function prepend($val): void {
$newNode = new ListNode($val);
// 将新节点的next指针指向原来的头节点,并将新节点设置为头节点
$newNode->next = $this->head;
$this->head = $newNode;
}
// 删除指定值的节点(如果有多个相同值的节点,只删除第一个)
public function delete($val): void {
// 如果链表为空,直接返回
if ($this->head == null) {
return;
}
// 如果要删除的节点是头节点,直接将头节点指向下一个节点
if ($this->head->val == $val) {
$this->head = $this->head->next;
return;
}
// 查找要删除节点的前一个节点
$current = $this->head;
while ($current->next != null) {
if ($current->next->val == $val) {
break;
}
$current = $current->next;
}
// 如果找到了要删除的节点,将前一个节点的next指针连接到要删除节点的下一个节点
if ($current->next != null) {
$current->next = $current->next->next;
}
}
// 打印链表中的所有节点值
public function display(): void {
$current = $this->head;
while ($current != null) {
echo $current->val . " ";
$current = $current->next;
}
echo "\n";
}
}
这是一个简单的链表实现,包含了在链表末尾添加节点、在链表开头插入节点、删除指定值的节点以及打印链表中的所有节点值的功能。你可以根据自己的需求对代码进行扩展和修改。