下面是关于“PHP单链表的实现代码”的完整攻略:
一、单链表的概念
单链表是一种线性数据结构。与数组不同,链表中的元素在内存中不是连续放置的,每个元素由一个存储本身元素的节点和一个指向下一个元素的指针组成。
二、单链表的实现
1. 定义单链表节点类
首先,我们需要定义一个节点类,用来表示单链表中的节点。每个节点应该包含一个数据域(存放节点的值)和一个指针域(指向下一个节点)。
class ListNode {
public $val; // 节点的值
public $next; // 指向下一个节点的指针
public function __construct($val)
{
$this->val = $val;
$this->next = null;
}
}
2. 定义单链表类
接下来,我们需要定义一个单链表类,用来对链表进行操作。在定义单链表类时,我们需要定义两个成员变量:
- head:头节点,表示链表的起始位置。
- size:链表的大小,表示链表中节点的个数。
class LinkedList {
private $head;
private $size;
public function __construct()
{
$this->head = null;
$this->size = 0;
}
// 插入节点
public function insert($val)
{
$node = new ListNode($val);
if (!$this->head) {
$this->head = $node;
} else {
$current = $this->head;
while ($current->next) {
$current = $current->next;
}
$current->next = $node;
}
$this->size++;
}
// 删除节点
public function delete($val)
{
if (!$this->head) {
return false;
}
if ($this->head->val === $val) {
$this->head = $this->head->next;
$this->size--;
return true;
}
$current = $this->head;
while ($current->next && $current->next->val !== $val) {
$current = $current->next;
}
if ($current->next) {
$current->next = $current->next->next;
$this->size--;
return true;
}
return false;
}
// 获取链表长度
public function getSize()
{
return $this->size;
}
// 显示链表
public function display()
{
$nodes = [];
$current = $this->head;
while ($current) {
$nodes[] = $current->val;
$current = $current->next;
}
echo implode(' -> ', $nodes);
}
}
3. 示例说明
示例 1
下面展示一个单链表的创建、插入节点和显示链表的过程:
$linkedList = new LinkedList(); // 创建一个单链表
$linkedList->insert(3); // 插入一个节点,值为3
$linkedList->insert(5); // 插入一个节点,值为5
$linkedList->insert(7); // 插入一个节点,值为7
$linkedList->display(); // 显示链表,输出:3 -> 5 -> 7
示例 2
下面展示一个单链表的删除节点的过程:
$linkedList = new LinkedList(); // 创建一个单链表
$linkedList->insert(3); // 插入一个节点,值为3
$linkedList->insert(5); // 插入一个节点,值为5
$linkedList->insert(7); // 插入一个节点,值为7
$linkedList->delete(5); // 删除值为5的节点
$linkedList->display(); // 显示链表,输出:3 -> 7
三、总结
通过上面的攻略,我们详细讲解了如何在PHP中实现单链表,包括定义单链表节点类、定义单链表类、插入、删除和显示单链表,最后通过两个示例进一步说明了如何操作单链表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP单链表的实现代码 - Python技术站