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 相关文章推荐
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
python存储16bit和32bit图像的实例
Dec 05 Python
django主动抛出403异常的方法详解
Jan 04 Python
python面向对象法实现图书管理系统
Apr 19 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
Python和Anaconda和Pycharm安装教程图文详解
Feb 04 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
PYcharm 激活方法(推荐)
Mar 23 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
Django用户认证系统如何实现自定义
Nov 12 Python
python IP地址转整数
Nov 20 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
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
MSN消息提示类
2006/09/05 Javascript
javascript实现轮显新闻标题链接
2007/08/13 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
vue组件三大核心概念图文详解
2019/05/30 Javascript
一个基于flask的web应用诞生(1)
2017/04/11 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
德尔福集团DELPHI的笔试题
2012/02/22 面试题
个人委托书范本
2014/09/13 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python