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 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
python删除列表中重复记录的方法
Apr 28 Python
python使用urllib2提交http post请求的方法
May 26 Python
详解Golang 与python中的字符串反转
Jul 21 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
详解python中的Turtle函数库
Nov 19 Python
python 函数中的参数类型
Feb 11 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
python unichr函数知识点总结
Dec 16 Python
Python基本知识点总结
Apr 07 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
香妃
2021/03/03 冲泡冲煮
在字符串中把网址改成超级链接
2006/10/09 PHP
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
微信小程序实现购物页面左右联动
2019/02/15 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
python字符串替换示例
2014/04/24 Python
Python psutil模块简单使用实例
2015/04/28 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
Numpy之random函数使用学习
2019/01/29 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
爱普生美国官网:Epson美国
2018/11/05 全球购物
文明倡议书范文
2014/04/15 职场文书
捐款感谢信
2015/01/20 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL