在PHP中反转链表是一个常见的编程练习,它可以帮助我们更好地理解链表的数据结构和操作。以下是一个简单的PHP实例,展示如何反转一个链表。
实例描述
我们将创建一个单链表,并实现一个函数来反转这个链表。

链表节点定义
我们定义一个链表节点类。
```php
class ListNode {
public $val;
public $next;
function __construct($val = 0, $next = null) {
$this->val = $val;
$this->next = $next;
}
}
```
反转链表函数
接下来,我们实现一个函数来反转链表。
```php
function reverseList($head) {
$prev = null;
$current = $head;
$next = null;
while ($current != null) {
$next = $current->next;
$current->next = $prev;
$prev = $current;
$current = $next;
}
return $prev;
}
```
使用表格展示链表反转过程
以下是一个表格,展示了反转链表的过程。
| 链表状态 | 链表节点 | prev | current | next |
|---|---|---|---|---|
| 初始状态 | 1->2->3->null | null | 1 | 2->3->null |
| 第1次迭代 | 1->2->3->null | 1 | 2 | 3->null |
| 第2次迭代 | 1->2->3->null | 1->2 | 3 | null |
| 第3次迭代 | 1->2->3->null | 1->2->3 | null | null |
完整代码
以下是完整的PHP代码示例。
```php
class ListNode {
public $val;
public $next;
function __construct($val = 0, $next = null) {
$this->val = $val;
$this->next = $next;
}
}
function reverseList($head) {
$prev = null;
$current = $head;
$next = null;
while ($current != null) {
$next = $current->next;
$current->next = $prev;
$prev = $current;
$current = $next;
}
return $prev;
}
// 创建链表
$head = new ListNode(1, new ListNode(2, new ListNode(3)));
// 反转链表
$reversedHead = reverseList($head);
// 打印反转后的链表
while ($reversedHead != null) {
echo $reversedHead->val . "
