剑指 Offer 24. 反转链表
程序员文章站
2022-03-11 17:24:24
...
题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
解题思路
这道题其实和求链表倒数第k个结点的解法相同,就是设置两个结点,这两个结点一前一后,比如p在后,q在前,那么在q不为null时,代表还没到链表的最后,将q的指针指向p,如果p为头结点,则指针指向null,在更改指针时需要注意先用temp存储q,然后将q推至下一位,再改变temp的指针,否则如果直接改变q的指针会导致q.next回到p的位置。
代码部分
以下为代码展示:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode p=head;
if(head==null){
return null;
}
ListNode q=head.next;
head.next=null;
while(q!=null){
ListNode temp=q;
q=q.next;
temp.next=p;
p=temp;
}
return p;
}
}
推荐阅读
-
剑指offer59:按之字形顺序打印二叉树:[[1], [3,2], [4,5,6,7]]
-
剑指offer64:滑动窗口的最大值
-
(难,未完)通配符或正则表达式:判断是否能匹配 == 剑指 Offer 19. 正则表达式匹配
-
《剑指offer》算法题整理
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer第二天
-
【数组】剑指 Offer 53 - I. 在排序数组中查找数字 I(简单)
-
剑指offer面试题53:在排序数组中查找数字(Java 实现)
-
《剑指offer》面试题53:在排序数组中查找数字
-
【剑指 Offer 53 - II】0~n-1中缺失的数字