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简单实现旋转图片的方法
May 30 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
python 解压pkl文件的方法
Oct 25 Python
Python pandas用法最全整理
Aug 04 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Jupyter notebook如何修改平台字体
May 13 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
编译问题
2006/10/09 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
python中defaultdict的用法详解
2017/06/07 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python读写zip压缩文件的方法
2018/08/29 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
python statsmodel的使用
2020/12/21 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
学生实习介绍信
2014/01/15 职场文书
生物科学专业自荐书
2014/06/20 职场文书
青年志愿者活动方案
2014/08/17 职场文书
在职员工证明书
2014/09/19 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
初中家长评语和期望
2014/12/26 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
运动会开幕式致辞
2015/07/29 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
全网非常详细的pytest配置文件
2022/07/15 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python