• 剑指offer15-反转链表


    题目描述

    输入一个链表,反转链表后,输出新链表的表头。

    示例

    输入  {1,2,3}

    返回值  {3,2,1}

    知识点回顾

     链表反转:递归法;迭代法

    代码

    #用递归的方式
    #
    -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # 返回ListNode def ReverseList(self, pHead): # write code here if pHead == None or pHead.next==None: return pHead newHead = self.ReverseList(pHead.next) //1->2->3->4->null:先反转pHead.next变为 1->(null<-2<-3<-4),此时1还是指向2 pHead.next.next=pHead //再将2指向原来的头指针1 pHead.next=None //将原来的头指针指向null return newHead // 返回新头指针
    #非递归的形式,一个个节点组装成新的反转链表
    #
    -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # 返回ListNode def ReverseList(self, pHead): # write code here if pHead == None or pHead.next == None: return pHead newHead=None //新节点初始化为NULL while pHead: tmp=pHead.next //临时节点存储pHead.next,否则直接下一个语句pHead.next=newHead会把原head.next的线断了,之后用pHead=pHead.next就不是原链表的下一个节点了 pHead.next=newHead //将当前头节点拆下来,指向新节点 newHead=pHead //将新链表的头指针移到最新拆解过来的节点 pHead=tmp //原头结点移到下一个,继续拆下一个节点到新链表 return newHead
  • 相关阅读:
    c++ 视频和教程下载站点
    SQL超时解决方法
    初学者必备:C++经典入门详细教程
    人生致命的八个经典问题
    字长与字节
    typedef用法(三)
    遍历搜索注册表
    数据库连接字符串大全 之 SQL服务器篇
    十五个步骤收获学习的习惯
    谈基于.net平台windows开发中的模式窗体.NET教程,.NET Framework
  • 原文地址:https://www.cnblogs.com/foolangirl/p/14001710.html
Copyright © 2020-2023  润新知