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求导数的方法
May 09 Python
Python多线程爬虫简单示例
Mar 04 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
python读取word 中指定位置的表格及表格数据
Oct 23 Python
python与mysql数据库交互的实现
Jan 06 Python
python多进程下的生产者和消费者模型
May 07 Python
解决python的空格和tab混淆而报错的问题
Feb 26 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
jQuery弹框插件使用方法详解
2020/05/26 jQuery
python生成随机mac地址的方法
2015/03/16 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
Python之时间和日期使用小结
2019/02/14 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
家长对孩子评语
2014/01/30 职场文书
综治工作心得体会
2014/09/11 职场文书
限期整改通知书
2015/04/22 职场文书
收入证明怎么写
2015/06/12 职场文书
数学备课组工作总结
2015/08/12 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python