反序链表

本文介绍了一种使用PHP实现单向链表反转的方法。通过循环遍历链表,重新设置每个节点的next指针,使其指向其前一个节点,从而达到反转链表的目的。文章提供了完整的代码示例,包括链表节点的定义、反转函数的实现以及正序和逆序链表的生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

<?php
/** 
 * 反转一个单向链表
 * 算法思路:通过循环遍历链表,重置next索引的指向,让其指向的位置颠倒
 * @author nswe
 */
  
/** 
 * 单向链表数据结构
 */
class LinkNode 
{ 
    //值域
    public $value; 
  
    //下个节点的指针
    public $next; 
  
    /**
     * 构造函数
     * @param $value 节点值
     */
    public function __construct($value)
    {
        $this->value =$value; 
    }
} 
  
/** 
 * 反转链表方法
 * @param LinkNode $list 链表
 */
function reverseList($list)
{ 
    $current= $list;
    $next   = $current->next;
  
    //链表的首节点要变成结尾节点,所以next要置空
    $current->next = null;
  
    while($next)
    {
        //保存原来链表的下个节点
        $result= $next;
  
        //保存原来链表的下个节点的下个节点到下次循环中
        $next= $next->next;
  
        //更改原来链表的下个节点的next索引
        $result->next =$current; 
  
        //保存下个节点到下次循环中
        $current= $result;
    }
    return $result; 
} 
  
/*调用执行代码*/
  
//动态生成正序列表9个 
$result= $firstNode = new LinkNode(1);
$i = 2; 
while($i< 10) 
{ 
    $firstNode->next =new LinkNode($i);
    $firstNode= $firstNode->next;
    $i++;
} 
  
/*打印调试结果*/
echo '正序:<br />'; 
print_r($result);
echo '<br /><br />'; 
  
$result= reverseList($result);
  
echo '逆序:<br />'; 
print_r($result); 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值