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 12 Python
pandas 数据实现行间计算的方法
Jun 08 Python
python TKinter获取文本框内容的方法
Oct 11 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python程序变成软件的实操方法
Jun 24 Python
django创建超级用户过程解析
Sep 18 Python
python 消除 futureWarning问题的解决
Dec 25 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
pytest配置文件pytest.ini的详细使用
Apr 17 Python
python 常用的异步框架汇总整理
Jun 18 Python
python数字类型和占位符详情
Mar 13 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生成html分页列表的代码
2007/03/18 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
表单内同名元素的控制
2006/11/22 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python实现注册、登录小程序功能
2018/09/21 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python matplotlib实时画图案例
2020/04/23 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
十八大演讲稿
2014/05/22 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
运动会的口号
2014/06/09 职场文书
寒山寺导游词
2015/02/03 职场文书
放射科岗位职责
2015/02/14 职场文书
客户答谢会致辞
2015/07/30 职场文书
《角的度量》教学反思
2016/02/18 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS