【LeetCode 力扣 206】反转链表,反转一个单链表。

本文介绍了如何使用Java实现单链表的反转,包括两种方法:一种是通过迭代,定义prevNode、curNode和nextNode来操作;另一种是遍历原链表并插入到新链表头部。详细步骤和代码示例有助于掌握数据结构技巧。
摘要由CSDN通过智能技术生成

学习目标:

目标:熟练运用Java数据结构知识


学习内容:

本文内容:使用Java实现:反转链表


题目描述

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

解题思路

  • 方法一:

第一步定义三个链表对象
第一个prevNode 表示当前结点的前一个结点,初始值为null
第二个curNode 表示当前结点,初始值为head头结点
第三个nextNode 表示当前结点的下一个结点

第二步
将当前结点的next 既curNode.next=prevNode 可将当前结点的next指向前一个结点
然后将三个结点依次后移即可

  • 方法二:

遍历原链表,然后将原链表的值一次头插到新链表即可

实现代码

  • 方法一:
class Solution {
    public ListNode reverseList(ListNode head) {
     if(head==null){
     //链表为空
            return head;
        }
        if(head.next==null){
            //链表只有一个元素
            return head;
        }
    ListNode pre=null;//前一个结点
        ListNode cur=head;//当前结点
        while(cur!=null){
            ListNode latter=cur.next;//记录当前结点的下一个结点
            cur.next=pre;//将当前结点的指向逆置
            pre=cur;//结点后移
            cur=latter;//结点后移
        }
        return pre;
    }
}
  • 方法二:
 private static Node reverseList(Node head) {
       ListNode newhead=null;//新链表头结点
       ListNode cur=head;//原链表头结点
       while(cur!=null){
           ListNode tmp=new ListNode(cur.val);//记录原链表结点
           tmp.next=newhead;//将原链表结点头插到新链表
           newhead=tmp;//重置新链表头结点
           cur=cur.next;
       }
       return newhead;        
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值