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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
python生成九宫格图片
Nov 19 Python
python中退出多层循环的方法
Nov 27 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
Python竟然能剪辑视频
May 25 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和ACCESS写聊天室(九)
2006/10/09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python实现打印实心和空心菱形
2019/11/23 Python
python实现三壶谜题的示例详解
2020/11/02 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
Linux Interview Questions For software testers
2013/05/17 面试题
网络工程师个人的自我评价范文
2013/10/01 职场文书
21岁生日感言
2014/02/27 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
学习雷锋主题班会
2015/08/14 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
python单元测试之pytest的使用
2021/06/07 Python
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server