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中的mock库对Python代码进行模拟测试
Apr 16 Python
Python基于DES算法加密解密实例
Jun 03 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
python 实现目录复制的三种小结
Dec 04 Python
python opencv旋转图片的使用方法
Jun 04 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 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&amp;mysql(五)
2006/10/09 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
javascript中的new使用
2010/03/20 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
如何快速上手Vuex
2017/02/14 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
广州品高软件.net笔面试题目
2012/04/18 面试题
激励口号大全
2014/06/17 职场文书
小学生安全责任书
2014/07/25 职场文书
大学生自荐材料范文
2014/12/30 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
鲁冰花观后感
2015/06/10 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers