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中的控制流语句的知识点
Apr 14 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 Python
python实现图像识别功能
Jan 29 Python
python生成密码字典的方法
Jul 06 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
python实现websocket的客户端压力测试
Jun 25 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 Python
Python中re模块的元字符使用小结
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
PHP新手上路(六)
2006/10/09 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
jquery之Document元素选择器篇
2008/08/14 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
JavaScript实现大图轮播效果
2017/01/11 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
iphone刘海屏页面适配方法
2019/05/07 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
对pandas中Series的map函数详解
2018/07/25 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
美德少年事迹材料
2014/01/23 职场文书
教师个人自我评价范文
2014/04/13 职场文书
民主评议党员个人总结
2015/02/13 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android