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 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
一文总结学习Python的14张思维导图
Oct 17 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
python中的colorlog库使用详解
Jul 05 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
在主流系统之上安装Pygame的方法
May 20 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
python tkinter Entry控件的焦点移动操作
May 22 Python
python析构函数用法及注意事项
Jun 22 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php设计模式 Singleton(单例模式)
2011/06/26 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
简介Django框架中可使用的各类缓存
2015/07/23 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
Python: 传递列表副本方式
2019/12/19 Python
Python使用re模块验证危险字符
2020/05/21 Python
python Xpath语法的使用
2020/11/26 Python
scrapy-splash简单使用详解
2021/02/21 Python
中专三年学习的个人自我评价
2013/12/12 职场文书
安全生产责任书范本
2014/04/15 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
小石潭记导游词
2015/02/03 职场文书
保护环境的宣传语
2015/07/13 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python