美文网首页
offer024 反转链表

offer024 反转链表

作者: D_w | 来源:发表于2022-03-15 15:57 被阅读0次

    定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

    示例:
    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL
    解法:我们使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。
    在遍历的时候,做当前结点的尾结点和前一个结点的替换。
    python:

    class Solution:
        def reverseList(self, head: ListNode) -> ListNode:
            if not head or not head.next:
                return head           #从头结点开始
            last = None
            while head:
                tmp = head.next         #暂存后继节点
                head.next = last        #让后继节点指向上一个节点
                last = head             #令本轮循环的节点成为下一轮循环中的前节点
                head = tmp              #令下一轮的节点为本轮的后继节点(即向后指向一位)
            return last                  # 这里得返回last,如果返回cur,最后cur已经指向空了
    

    java:

    public class Offer024 {
        public ListNode reverseList(ListNode head) {
            ListNode last = Null;
            while (head != null){
                ListNode tmp = head.next;
                head.next = last;
                last = head;
                head = tmp;
            }
            return last
        }
    }
    

    相关文章

      网友评论

          本文标题:offer024 反转链表

          本文链接:https://www.haomeiwen.com/subject/gnjydrtx.html