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赋值操作方法分享
Mar 23 Python
Python 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
python基础教程之数字处理(math)模块详解
Mar 25 Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 Python
Python socket C/S结构的聊天室应用实现
Nov 30 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
django框架auth模块用法实例详解
Dec 10 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
May 03 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 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中截取中文字符串的代码小结
2011/07/17 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
深入研究React中setState源码
2017/11/17 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
vue实现自定义多选按钮
2020/07/16 Javascript
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
使用python存储网页上的图片实例
2018/05/22 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
python验证码图片处理(二值化)
2019/11/01 Python
Python如何访问字符串中的值
2020/02/09 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
料理师求职信
2014/01/30 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
热血教师观后感
2015/06/10 职场文书
雷锋的观后感
2015/06/10 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android