206. 反转链表

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        #空列表直接返回
        if head==None:
            return head
        #利用栈记录遍历信息
        stack = []
        node = head
        while node.next:
            stack.append(node.val)
            node = node.next
        #将最后一个节点记录为新的head节点
        newhead = node
        #再次遍历直到栈为空
        while stack:
            node.next = ListNode(stack.pop())
            node = node.next
        return newhead

递归

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        #空列表直接返回
        if head==None or head.next==None:
            return head
        p = self.reverseList(head.next)
        head.next.next = head
        head.next = None
        return p

迭代

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        cur = head
        pre = None
        while cur:
            temp = cur.next
            cur.next = pre
            pre = cur
            cur = temp
        return pre
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NU...
    追云的帆阅读 508评论 0 1
  • 在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一...
    衣锦昼行阅读 138评论 0 0
  • 题目: 反转一个单链表。 示例: 思路: 双指针迭代链表:一个指针pre指向null,一个指针cur指向链表头,遍...
    唧唧复唧唧丨阅读 157评论 0 0
  • 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NU...
    大将军Lee阅读 251评论 0 0
  • 使用头插法实现 2019.8.5----MJ数据结构与算法更新 1、Java递归 这个递归真的想了好久好久才想明白...
    Missmiss懵阅读 250评论 0 0

友情链接更多精彩内容