python实现获取单向链表倒数第k个结点的值示例


Posted in Python onOctober 24, 2019

本文实例讲述了python实现获取单向链表倒数第k个结点的值。分享给大家供大家参考,具体如下:

#初始化链表的结点
class Node():
  def __init__(self,item):
    self.item = item
    self.next = None
#传入头结点,获取整个链表的长度
def length(headNode):
  if headNode == None:
    return None
  count = 0
  currentNode =headNode
  #尝试了一下带有环的链表,计算长度是否会死循环,确实如此,故加上了count限制 = =||
  while currentNode != None and count <=1000:
    count+=1
    currentNode = currentNode.next
  return count
#获取倒数第K个结点的值,传入头结点和k值
def findrKnode(head,k):
  if head == None:
    return None
  #如果长度小于倒数第K个值,则返回通知没有这么长
  elif length(head)<k:
    print("链表长度没有倒数第"+str(k)+"数")
    return None
  else:
    #设置两个针,一个快,一个慢,都指向头结点
    fastPr = head
    lowPr = head
    count = 0
    #让fastPr先走k个长度
    while fastPr!=None and count<k:
      count+=1
      fastPr = fastPr.next
    #此时fastPr和lowPr同速前进,当fastPr走到尾部,lowPr此处的值正好为倒数的k值
    while fastPr !=None:
      fastPr = fastPr.next
      lowPr = lowPr.next
    return lowPr
if __name__ == "__main__":
  node1 = Node(1)
  node2 = Node(2)
  node3 = Node(3)
  node4 = Node(4)
  node5 = Node(5)
  node6 = Node(6)
  node7 = Node(7)
  node8 = Node(8)
  node9 = Node(9)
  node10 = Node(10)
  node1.next = node2
  node2.next = node3
  node3.next = node4
  node4.next = node5
  node5.next = node6
  node6.next = node7
  node7.next = node8
  node8.next = node9
  node9.next = node10
  print(findrKnode(node1,5).item)

运行结果:

6

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
在Python中字符串、列表、元组、字典之间的相互转换
Nov 15 Python
Python中Subprocess的不同函数解析
Dec 10 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Python类中self参数用法详解
Feb 13 Python
结束运行python的方法
Jun 16 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 Python
python模块导入的方法
Oct 24 #Python
python读取word 中指定位置的表格及表格数据
Oct 23 #Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 #Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 #Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 #Python
python list多级排序知识点总结
Oct 23 #Python
python实现的汉诺塔算法示例
Oct 23 #Python
You might like
Zend Guard一些常见问题解答
2008/09/11 PHP
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
深入理解PHP原理之异常机制
2010/08/21 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
javascript中this的四种用法
2015/05/11 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
详解Django中的过滤器
2015/07/16 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
设置python3为默认python的方法
2018/10/31 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
python内存动态分配过程详解
2019/07/15 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
公司JAVA开发面试题
2015/04/02 面试题
公司开业庆典主持词
2014/03/21 职场文书
解除劳动合同协议书
2014/04/14 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
白酒营销策划方案
2014/08/17 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
聘任证明怎么写
2015/03/02 职场文书
法律意见书范文
2015/06/04 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL