zoukankan      html  css  js  c++  java
  • 206. Reverse Linked List

    1. 原始题目

    Reverse a singly linked list.

    Example:

    Input: 1->2->3->4->5->NULL
    Output: 5->4->3->2->1->NULL

    2. 题目理解

    反转一个单链表

    注意:空链表的处理,单个结点的处理

    3. 解法

    因为在反向指向结点的时候容易导致链表出现断裂,所以需3个结点保存当前结点,当前结点之前,之后的结点。

     1 # Definition for singly-linked list.
     2 # class ListNode:
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.next = None
     6 
     7 class Solution:
     8     def reverseList(self, head: ListNode) -> ListNode:
     9         if not head:           # 空链表返回None
    10             return None
    11         if not head.next:      # 单结点返回当前结点
    12             return head
    13         
    14         i = head               # 依次定义3个结点
    15         j = i.next
    16         k = j.next
    17         i.next = None
    18         while(j):
    19             j.next = i
    20             i = j
    21             j = k
    22             if k:
    23                 k = k.next
    24         return i

    4. 验证结果

    ss = Solution_reverse()
    new_head = ss.reverseList(newlist.head)
    newlist.print_node(new_head)

    1 1 2 3 4 4
    4 4 3 2 1 1

    注:newlist以及链表定义见博文

  • 相关阅读:
    验证码处理函数
    Apache2.2下载及安装
    centos6.4、6.5、7.0环境下载及安装
    数据库实务 实务隔离级别
    InnoDB 锁
    索引常见问题处理
    数据库索引 B-Tree索引 hash索引
    JVM学习-(2)
    jvm学习-(1)
    linux杂记
  • 原文地址:https://www.cnblogs.com/king-lps/p/10655141.html
Copyright © 2011-2022 走看看