一、题目描述
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
二、题目分析
双指针操作:prev指针,curr指针;
对单链表的理解:包含属性(成员变量)和方法;其中,成员变量包括单链表节点的当前值和指向下一个节点的指针。
单链表实例的赋值:每一个类的实例化对象,都含有当前节点值和下一个节点的指向;所以,实例之间的赋值,都是将内容和指向打包在一起后,集体赋值。
临时空节点的思想:设置一个临时的空节点,用于存储反转过程中的节点。
三、代码实现
/*** 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 prev=null; // 双指针,prev指针,curr指针;ListNode curr=head;while (curr!=null){ListNode nextTemp=null; // 创建一个临时节点nextTemp=curr.next; // 从curr.next开始,走一个圈curr.next=prev;prev=curr;curr=nextTemp;}return prev; //以prev作为新的链表的头节点(head)返回}
}