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错误处理详解
Sep 28 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
Python找出微信上删除你好友的人脚本写法
Nov 01 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
centos7中安装python3.6.4的教程
Dec 11 Python
如何理解python中数字列表
May 29 Python
python数据类型强制转换实例详解
Jun 22 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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速度全攻略
2006/10/09 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
Node.js简单入门前传
2017/08/21 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
用Python创建声明性迷你语言的教程
2015/04/13 Python
python设置值及NaN值处理方法
2018/07/03 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
python实现三维拟合的方法
2018/12/29 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
python datetime中strptime用法详解
2019/08/29 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
物流管理毕业生自荐信
2013/10/24 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
爱心募捐通知范文
2015/04/27 职场文书
音乐会主持人开场白
2015/05/28 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
浅析Python中的随机采样和概率分布
2021/12/06 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python