Python单链表简单实现代码


Posted in Python onApril 27, 2016

本文实例讲述了Python单链表简单实现代码。分享给大家供大家参考,具体如下:

用Python模拟一下单链表,比较简单,初学者可以参考参考

#coding:utf-8
class Node(object):
  def __init__(self, data):
    self.data = data
    self.next = None
class NodeList(object):
  def __init__(self, node):
    self.head = node
    self.head.next = None
    self.end = self.head
  def add_node(self, node):
    self.end.next = node
    self.end = self.end.next
  def length(self):
    node = self.head
    count = 1
    while node.next is not None:
      count += 1
      node = node.next
    return count
  # delete node and return it's value
  def delete_node(self, index):
    if index+1 > self.length():
      raise IndexError('index out of bounds')
    i = 0
    node = self.head
    while True:
      if i==index-1:
        break
      node = node.next
      i += 1
    tmp_node = node.next
    node.next = node.next.next
    return tmp_node.data
  def show(self):
    node = self.head
    node_str = ''
    while node is not None:
      if node.next is not None:
        node_str += str(node.data) + '->'
      else:
        node_str += str(node.data)
      node = node.next
    print node_str
  # Modify the original position value and return the old value
  def change(self, index, data):
    if index+1 > self.length():
      raise IndexError('index out of bounds')
    i = 0
    node = self.head
    while True:
      if i == index:
        break
      node = node.next
      i += 1
    tmp_data = node.data
    node.data = data
    return tmp_data
  # To find the location of index value
  def find(self, index):
    if index+1 > self.length():
      raise IndexError('index out of bounds')
    i = 0
    node = self.head
    while True:
      if i == index:
        break
      node = node.next
      i += 1
    return node.data
#test case
n1 = Node(0)
n2 = Node(1)
n3 = Node(2)
n4 = Node(3)
n5 = Node(4)
node_list = NodeList(n1)
node_list.add_node(n2)
node_list.add_node(n3)
node_list.add_node(n4)
node_list.add_node(n5)
#node = node_list.delete_node(3)
#print node
#d = node_list.change(0,88)
data = node_list.find(5)
print data
node_list.show()

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

Python 相关文章推荐
Python实现的自定义多线程多进程类示例
Mar 23 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
python 日期排序的实例代码
Jul 11 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
python 如何用map()函数创建多线程任务
Apr 07 Python
python3 删除所有自定义变量的操作
Apr 08 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
python版本的读写锁操作方法
Apr 25 #Python
Python简单实现enum功能的方法
Apr 25 #Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 #Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 #Python
Python 中的 else详解
Apr 23 #Python
Python 探针的实现原理
Apr 23 #Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 #Python
You might like
PHP开发负载均衡指南
2010/07/17 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
python里大整数相乘相关技巧指南
2014/09/12 Python
Python中的类与对象之描述符详解
2015/03/27 Python
python遍历数组的方法小结
2015/04/30 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
通过shell+python实现企业微信预警
2019/03/07 Python
从0开始的Python学习016异常
2019/04/08 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
创业融资计划书
2014/04/25 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
涨价通知怎么写
2015/04/23 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python