Python单链表的简单实现方法


Posted in Python onSeptember 23, 2014

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

通常来说,要定义一个单链表,首先定义链表元素:Element.它包含3个字段:

list:标识自己属于哪一个list
datum:改元素的value
next:下一个节点的位置

具体实现代码如下:

class LinkedList(object):
  
  class Element(object):
    
    def __init__(self,list,datum,next): 
      self._list = list
      self._datum = datum 
      self._next = next

    def getDatum(self): 
      return self._datum

    datum = property(
      fget = lambda self: self.getDatum())

    def getNext(self):
      return self._next

    next = property(
      fget = lambda self: self.getNext())

  def __init__(self):

    self._head = None
    self._tail = None
  def getHead(self):
    return self._head 
  head = property(
    fget = lambda self: self.getHead()) 
  def prepend(self,item):
    tmp = self.Element (self,item,self._head)
    if self._head is None:
      self._tail = tmp 
    self._head = tmp 

  def insert(self, pos, item):
    i = 0
    p = self._head
    while p != None and i < pos -1:
      p = p._next
      i += 1
    if p == None or i > pos-1:
      return -1
    tmp = self.Element(self, item, p._next)
    p._next = tmp
    return 1
  def getItem(self, pos):
    i = 0
    p = self._head
    while p != None and i < pos -1:
      p = p._next
      i += 1
    if p == None or i > post-1:
      return -1
    return p._datum
  def delete(self, pos):
    i = 0
    p = self._head
    while p != None and i < pos -1:
      p = p._next
      i += 1
    if p == None or i > post-1:
      return -1
    q = p._next
    p._nex = q._next
    datum = p._datum
    return datum
  def setItem(self, pos, item):
    i = 0
    p = self._head
    while p != None and i < pos -1:
      p = p._next
      i += 1
    if p == None or i > post-1:
      return -1
    p._datum = item
    return 1
  def find(self, pos, item):
    i = 0
    p = self._head
    while p != None and i < pos -1:
      if p._datum == item:
        return 1
      p = p._next
      i += 1
    return -1
  def empty(self):
    if self._head == None:
      return 1
    return 0
  def size(self):
    i = 0
    p = self._head
    while p != None and i < pos -1:
      p = p._next
      i += 1
    return i

  def clear(self):
    self._head = None
    self._tail = None

test = LinkedList()
test.prepend('test0')
print test.insert(1, 'test')
print test.head.datum
print test.head.next.datum

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

Python 相关文章推荐
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python实现设置windows桌面壁纸代码分享
Mar 28 Python
使用Python实现一个简单的项目监控
Mar 31 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
解决python Markdown模块乱码的问题
Feb 14 Python
pandas删除指定行详解
Apr 04 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
Aug 27 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
Python基于gevent实现高并发代码实例
May 15 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
Python中bisect的用法
Sep 23 #Python
python元组操作实例解析
Sep 23 #Python
Python中实现两个字典(dict)合并的方法
Sep 23 #Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 #Python
Python中的类学习笔记
Sep 23 #Python
Python函数嵌套实例
Sep 23 #Python
Python中的自定义函数学习笔记
Sep 23 #Python
You might like
PHP4在Windows2000下的安装
2006/10/09 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
js实现继承的5种方式
2015/12/01 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python程序语言快速上手教程
2012/07/18 Python
python连接字符串的方法小结
2015/07/13 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
环境科学专业大学生自荐信格式
2013/09/21 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
小学生开学感言
2014/02/28 职场文书
团队精神口号
2014/06/06 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers