PHP从尾到头打印链表实例讲解

网络编程 2025-03-24 18:34www.168986.cn编程入门

这篇文章将带你了解如何使用PHP从尾到头打印链表的内容。对于需要掌握链表操作的朋友们,这是一个值得一试的题目。

题目描述:给定一个链表,目标是按照从尾到头的顺序打印链表中每个节点的值。这个问题有多种解决方法,包括使用栈以及递归。接下来,我们将分别介绍这两种方法的实现方式。

首先是递归版本的解决方案:

在递归方法中,我们从链表的头部开始遍历,并在递归过程中逐步将节点的值添加到结果数组中。当到达链表的尾部时,递归返回并将结果数组从尾部向头部逐步添加至主数组。这是一种非常简洁的解决方案,以下是代码示例:

function printListFromTailToHead($head) {

if($head == NULL){ // 如果链表为空,则返回空数组

return [];

}

$cur = $head; // 当前节点指向链表头部

$arr = array(); // 用于存储节点值的数组

if($cur->next != null){ // 如果当前节点有下一个节点,则递归调用函数处理剩余部分链表

$arr = printListFromTailToHead($cur->next);

}

array_push($arr, $cur->val); // 将当前节点的值添加到结果数组的尾部

return $arr; // 返回结果数组,数组中的元素即为从尾到头打印的节点值

}

接下来是非递归版本的解决方案:首先遍历链表并将所有节点的值按照顺序存储在一个数组中。然后,使用另一个数组将原数组中的元素逆序存储,最终得到的结果就是从尾到头打印的节点值。以下是代码示例:

function printListFromTailToHead($head) {

if($head == NULL){ // 如果链表为空,则返回空数组

return [];

}

$cur = $head; // 当前节点指向链表头部

$arr = array(); // 存储节点值的数组

while($cur != NULL){ // 遍历链表并将节点值存储在数组中

array_push($arr, $cur->val);

$cur = $cur->next; // 移动到下一个节点

}

$re = array(); // 用于存储逆序结果的数组

while(!empty($arr)){ // 将原数组中的元素逆序存储到新数组中

$tmp = array_pop($arr); // 从原数组中弹出最后一个元素并存储在临时变量中

array_push($re, $tmp); // 将临时变量添加到新数组的末尾位置(即头部)

}

return $re; // 返回结果数组,数组中的元素即为从尾到头打印的节点值 接下来可以调用以上函数进行测试了。如果你对链表操作不熟悉,可以尝试运行一下代码来加深理解哦!希望这篇文章能对你有所帮助!

上一篇:PHP递归复制、移动目录的自定义函数分享 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by