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采用getopt解析命令行输入参数实例
Sep 30 Python
Python中字典和JSON互转操作实例
Jan 19 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
python实现随机梯度下降法
Mar 24 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
详解Django 时间与时区设置问题
Jul 23 Python
python读取文件指定行内容实例讲解
Mar 02 Python
Python 实现使用空值进行赋值 None
Mar 12 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
Python pyecharts绘制条形图详解
Apr 02 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+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
再探JavaScript作用域
2014/09/24 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
python isinstance函数用法详解
2020/02/13 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
本科毕业生求职信
2014/06/15 职场文书
文员求职信
2014/07/15 职场文书
维稳承诺书
2015/01/20 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015大学生求职信范文
2015/03/20 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python