面试题24:反转链表

NowCoder

<?php
header("content-type:text/html;charset=utf-8");
/*
 * 输入一个链表,反转链表后,输出新链表的表头。P142
 */

class ListNode{
    var $val;
    var $next = NULL;
    function __construct($x){
        $this->val = $x;
    }
}
function ReverseList($pHead)
{
    if($pHead == null || $pHead->next == null){
        return $pHead;
    }
    $cur = $pHead;
    $pre = null;
    $next = null;
    while ($cur != null){
        $next = $cur->next;
        $cur->next = $pre;
        $pre = $cur;
        $cur = $next;
    }
    return $pre;   //注意这里返回的是pre,不是pHead !!!!!!
}

$pHead = new ListNode(1);
$pHead->next = new ListNode(2);
$pHead->next->next = new ListNode(3);
$pHead->next->next->next = new ListNode(4);
$pHead->next->next->next->next = new ListNode(5);
print_r($pHead);
echo "</br>";
print_r(ReverseList($pHead));

原文地址:https://www.cnblogs.com/xlzfdddd/p/10198328.html

时间: 2024-10-31 18:57:31

面试题24:反转链表的相关文章

【剑指Offer】面试题24. 反转链表

题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 注意:本题同[LeetCode]206. 反转链表 思路一:反转链表元素 取出链表中元素放入vector中,然后将vector中元素逆向存入链表中. 遍历链表,用vector存放数组元素. 再次遍历链表,从ve

LeetCode 面试题24. 反转链表

题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/ 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 1 /** 2 * Definition for singly-linked list.

【LeetCode】206. 反转链表

题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表.你能否用两种方法解决这道题? 注意:本题同[剑指Offer]面试题24. 反转链表 思路一:反转链表元素 取出链表中元素放入vector中,然后将vector中元素逆向存入链表中. 遍历链表,用vector存放数组元素. 再次遍历链表,从vector尾部读取元素依次放入链表中. 代码

链表面试题(一):反转链表的算法实现

关于链表的考察 链表是面试里面经常涉及到的考点,因为链表的结构相比于Hashmap.Hashtable.Concurrenthashmap或者图等数据结构简单许多,对于后者更多面试的侧重点在于其底层实现.比如Hashmap中Entry<k,v>等操作.如何扩容.容量的设定等.链表的考察更侧重于代码的书写和思路的形成.虽然说,链表的结构简单,但是涉及到指针的操作,容易引申出一些挑战性的考题,其中也牵涉到诸多小的细节的考虑,更能看出代码书写的能力和功底. 面试题:反转链表 题目:定义一个函数,输入

剑指Offer面试题16(Java版):反转链表

题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点. 解决与链表相关的问题总是有大量的指针操作,而指针操作的代码总是容易出错的.很多的面试官喜欢出链表相关的问题,就是想通过指针操作来考察应聘者的编码功底.为了避免出错,我们最好先进行全面的分析.在实际软件开发周期中,设计的时间通常不会比编码的时间短.在面试的时候我们不要急于动手写代码,而是一开始仔细分析和涉及,这将会给面试官留下好的印象.与其给出一段漏洞百出的代码,倒不如仔细分析再写出鲁棒性好的代码. 为了正确的反转一个

每天一道面试题LeetCode 206 -- 反转链表

LeetCode206 反转链表 思路 代码 # # @lc app=leetcode.cn id=206 lang=python3 # # [206] 反转链表 # # https://leetcode-cn.com/problems/reverse-linked-list/description/ # # algorithms # Easy (61.53%) # Likes: 624 # Dislikes: 0 # Total Accepted: 112.8K # Total Submiss

《剑指offer》第二十四题(反转链表)

// 面试题24:反转链表 // 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的 // 头结点. #include <iostream> #include "List.h" ListNode* ReverseList(ListNode* pHead) { ListNode* pReversedHead = nullptr;//设置三个节点变量,第一是已经被反转的头节点(原链表尾节点) ListNode* pNode = pHead;//第二个是当前节

剑指Offer对答如流系列 - 反转链表

面试题24:反转链表 题目描述 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点 链表结构 public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 问题分析 头插法是反转链表非常经典的一种手段,这里演示一下吧,毕竟这个在JDK源码中也能遇见. 核心代码如下: ListNode Inverse(ListNode L) { ListNode p,

《剑指offer》第二十四题:反转链表

// 面试题24:反转链表 // 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的 // 头结点. #include <cstdio> #include "List.h" ListNode* ReverseList(ListNode* pHead) { ListNode* pRevHead = nullptr; ListNode* pNode = pHead; //当前节点 ListNode* pPrev = nullptr; //前一个节点 whil