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 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
python清除字符串里非数字字符的方法
Jul 02 Python
Python实现Linux中的du命令
Jun 12 Python
Python3 处理JSON的实例详解
Oct 29 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
python为QT程序添加图标的方法详解
Mar 09 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
python用Configobj模块读取配置文件
Sep 26 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
php5 mysql分页实例代码
2008/04/10 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
js常见表单应用技巧
2008/01/09 Javascript
js 动态选中下拉框
2009/11/26 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
让python json encode datetime类型
2010/12/28 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
预备党员政审材料
2014/02/04 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
协议书怎么写
2014/04/21 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
简历中自我评价范文
2015/03/11 职场文书
教师创先争优承诺书
2015/04/27 职场文书
现实表现证明材料
2015/06/19 职场文书