力扣链接文章来源:https://www.toymoban.com/news/detail-791846.html
算法思想:由于单链表是单向的,想要对当前元素进行操作,需找到前一个元素。本题利用双指针,初始pre指针指向NULL,cur指针指向head.再对局部翻转之前,先把下一个结点存到temp指针中。当进行完如下代码逻辑后,此时cur指针指向NULL,pre指针指向头结点
代码
/**
* 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 pre = null, cur = head;
while (cur != null) {
ListNode temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
}
}
文章来源地址https://www.toymoban.com/news/detail-791846.html
/**
* 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) {
if (head == null) return null;
ListNode a = head; //a指向第一个结点
ListNode b = head.next; //b指向第二个节点
while (b != null) {
ListNode c = b.next; //保存第三个节点
b.next = a; //翻转 b->a
a = b; //后移一位
b = c; //后移一位
}
//最终a指向最后一个节点,变成第一个结点,b指向空,循环结束
head.next =null; //第一个结点变成最后一个节点,next指向null
return a;
}
}
到了这里,关于LeetCode:206. 反转链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!