面向小白的 力扣206. 反转链表

124 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情

一起来学点算法,这里是慢慢学算法,我是小coder,昨天我们学习了合并数组,今天我们依旧来玩玩链表,链表也是面试常考的数据结构,我们今天来玩206题,这是一道简单题,我们来实现一下。

这里简单介绍一下单链表:单链表只有一个next指针域和数据域,next指针指向node.next为正,反过来是node.next=node。

题目描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

输入: head = [1,2,3,4,5]
输出: [5,4,3,2,1]

示例 1:

image.png 示例 2:

image.png

输入: head = [1,2]
输出: [2,1]

题目分析

给定一个链表完成链表反转,很简单,只要改变指向的顺序即可,本题为单链表,所以只需修改next指向即可,将next指向指向上一个,原来是1的下一个是2.现在变成1的下一个是空,2的下一个变成1,依次类推。

解题思路

  1. 确定操作对象:本题中,操作对象为单链表
  2. 确定操作条件:操作条件为遍历链表中所有元素。
  3. 确定操作过程:操作过程为:取出下一个节点,将节点下一个指向置为上一个,然后要修改last变为当前,作为下一个节点的上一个节点,修改head,为当前节点的下一个节点,等循环结束。
  4. 确定结果返回:返回上一个节点

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode last =null;
      while(head !=null){
         ListNode nextNode= head.next;
         head.next=last;
         last=head;
         head=nextNode;

      }
      return last;
    }
}

题目总结

这道题目是一道简单题,有助于考察我们对链表数据结构的理解。

你们学会了吗?