面试题16:反转链表

题目描述

输入一个链表,反转链表后,输出链表的所有元素。

代码实现

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        
        ListNode pre = null;
        ListNode curr = head;
        ListNode next = null;
        
        while(curr != null){
            next = curr.next;
            curr.next = pre;
            pre = curr;
            curr = next;
        }
        
        return pre;
    }
}

主要思路

1、首先我们需要3个结点,第一个是当前结点,第二个是当前结点的前一结点,因为我们需要将当前结点指向前一结点;第三个是当前结点的下一结点,因为每次将当前结点指向前一结点前,需要先保存下一结点,否则链表会断裂
2、递归解法不是很理解,有点绕,就不研究了,哪种方法简单就用哪种吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目:输入一个链表,反转链表后,输出链表的所有元素。 思路1:用列表保存链表中的所有元素,然后将其进行反转,新建链...
    minningl阅读 1,688评论 0 0
  • 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 解法:
    qmss阅读 1,463评论 0 0
  • 题目链接:面试题16 反转链表 我的思路 反转链表的基本思路就是把指向后驱的指针指向前驱 如果把指针的指向改变,无...
    贾雨村甄士隐阅读 3,047评论 0 0
  • 题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点 递归算法: 1.找到最后一个节点和倒...
    Felicia1993阅读 2,695评论 0 0
  • 转载请注明出处:http://www.jianshu.com/p/c65d9d753c31 在上一篇博客《数据结构...
    Alent阅读 8,836评论 4 74

友情链接更多精彩内容