• 找到链表的倒数第k个节点 python


      题目:给定一个链表的头节点,输出链表倒数第k个节点的值

      分析:最简单的思路就按顺序访问链表节点,得到链表的长度x之后,再次从头节点出发,访问到第x-k+1个节点时,就是链表倒数第k个节点,但是这样的方法对前x-k+1个节点重复访问了两遍,效率较低。在解答链表相关题目时,设置两个甚至三个指针常用的方法,在这个题目中,可以设置两个指针,一个为a,一个为b,a先出发,在a访问了k-1个节点时,b从头节点出发,然后两个指针同时向后访问,当a访问到最后一个节点时,b访问到的就是倒数第k个节点,代码如下。

    def lastknode(head,k):
        if head==None or k==0:return None
        else:
            ahead=head#指针a
            for i in range(k-1):
                if ahead.next!=None:
                    ahead=ahead.next
                else: return None
            behend=head#指针b
            while ahead.next!=None:
                ahead=ahead.next
                behend=behend.next
            return behend

      在访问的过程中,要随时判断当前节点指向的是否是空节点,避免出现链表长度小于k的情况。

  • 相关阅读:
    家庭记账本_2
    家庭记账本_1
    安卓学习进度_25
    安卓软件学习进度_24
    对体温上报app的总结
    安卓软件学习进度_23
    安卓软件学习进度_22
    安卓开发
    安卓开发
    安卓开发
  • 原文地址:https://www.cnblogs.com/bambipai/p/10704284.html
Copyright © 2020-2023  润新知