`

Python 学习:单链表的实现

阅读更多

要定义一个单链表,首先定义链表元素:Element.它包含3个字段:
list:标识自己属于哪一个list
datum:改元素的value
next:下一个节点的位置

  1. class LinkedList(object):
  2.     
  3.     class Element(object):
  4.         
  5.         def __init__(self,list,datum,next):
  6.             self._list = list
  7.             self._datum = datum
  8.             self._next = next

  9.         def getDatum(self):
  10.             return self._datum

  11.         datum = property(
  12.             fget = lambda self: self.getDatum())

  13.         def getNext(self):
  14.             return self._next

  15.         next = property(
  16.             fget = lambda self: self.getNext())


  17.     def __init__(self):

  18.         self._head = None
  19.         self._tail = None
  20.     def getHead(self):
  21.         return self._head
  22.     head = property(
  23.         fget = lambda self: self.getHead())
  24.     def prepend(self,item):
  25.         tmp = self.Element (self,item,self._head)
  26.         if self._head is None:
  27.             self._tail = tmp
  28.         self._head = tmp

  29.     def insert(self, pos, item):
  30.         i = 0
  31.         p = self._head
  32.         while p != None and i < pos -1:
  33.             p = p._next
  34.             i += 1
  35.         if p == None or i > pos-1:
  36.             return -1
  37.         tmp = self.Element(self, item, p._next)
  38.         p._next = tmp
  39.         return 1
  40.     def getItem(self, pos):
  41.         i = 0
  42.         p = self._head
  43.         while p != None and i < pos -1:
  44.             p = p._next
  45.             i += 1
  46.         if p == None or i > post-1:
  47.             return -1
  48.         return p._datum
  49.     def delete(self, pos):
  50.         i = 0
  51.         p = self._head
  52.         while p != None and i < pos -1:
  53.             p = p._next
  54.             i += 1
  55.         if p == None or i > post-1:
  56.             return -1
  57.         q = p._next
  58.         p._nex = q._next
  59.         datum = p._datum
  60.         return datum
  61.     def setItem(self, pos, item):
  62.         i = 0
  63.         p = self._head
  64.         while p != None and i < pos -1:
  65.             p = p._next
  66.             i += 1
  67.         if p == None or i > post-1:
  68.             return -1
  69.         p._datum = item
  70.         return 1
  71.     def find(self, pos, item):
  72.         i = 0
  73.         p = self._head
  74.         while p != None and i < pos -1:
  75.             if p._datum == item:
  76.                 return 1
  77.             p = p._next
  78.             i += 1
  79.         return -1
  80.     def empty(self):
  81.         if self._head == None:
  82.             return 1
  83.         return 0
  84.     def size(self):
  85.         i = 0
  86.         p = self._head
  87.         while p != None and i < pos -1:
  88.             p = p._next
  89.             i += 1
  90.         return i

  91.     def clear(self):
  92.         self._head = None
  93.         self._tail = None


  94. test = LinkedList()
  95. test.prepend('test0')
  96. print test.insert(1, 'test')
  97. print test.head.datum
  98. print test.head.next.datum
分享到:
评论

相关推荐

    python实现的单链表

    在Python编程语言中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个...在实际开发中,单链表数据结构常用于实现各种算法,如排序、搜索等,是数据结构学习的重要组成部分。

    Python结构:面向程序员的结构化PythonPython Structures: Structured Python for the Principled Programmer

    此外,书中还探讨了在Python中实现替代的链表结构,如单链表、双链表和循环链表,这些高级数据结构为处理特定类型的问题提供了更多的灵活性。 在面向对象编程方面,书籍重点讲解了数据抽象和封装的概念,以及如何...

    SingleLinkList_python数据结构单链表函数_

    在这个"SingleLinkList_python数据结构单链表函数_"主题中,我们将深入探讨如何在Python中实现单链表及其核心操作。 首先,我们有两个文件:LList.py和LNode.py。LNode.py通常会定义链表的节点类,而LList.py将包含...

    数据结构与算法:Python实现单链表及其应用

    内容概要:本文详细介绍了单链表的 Python 实现方法,包括基本操作如 append(在链表末尾添加元素)、prepend(在链表头部添加元素)、delete(删除指定值的节点)、search(搜索指定值的节点)、display(打印链表...

    Python实现数据结构线性链表(单链表)算法示例

    这个示例提供了一个完整的单链表实现,涵盖了数据结构和算法的基础概念,对于学习Python数据结构和算法的初学者来说非常有用。通过理解和实践这些代码,你可以更好地掌握链表操作,为更复杂的算法和数据结构打下坚实...

    Python单链表实现详解及其基本操作(包含详细的完整的程序和数据)

    本文深入探讨了单链表这种线性数据结构的概念与特性,并提供了一套详尽易懂的 Python 实现方案。从理论出发到代码层面进行剖析讲解,涉及链表的关键组成部分以及如何利用 Python 来构建支持基本操作(如插入、删除和...

    python版本单链表实现代码

    在本文中,我们将探讨如何在Python中实现单链表。单链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据和一个指向下一个节点的引用(在Python中通常称为指针)。在Python中,由于没有原生的指针概念,...

    SinglyLinkedList:单链表(OOP和数据结构研究)

    这个简单的Python实现展示了如何用OOP来构建一个单链表。 总之,单链表是数据结构学习的基础,理解其工作原理和操作方法对于提升编程能力至关重要。通过实践和深入研究,我们可以更好地利用单链表解决各种问题。在...

    python如何实现单链表的反转

    这篇文章主要介绍了python如何实现单链表的反转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 # coding=utf-8 class Node: def __init__(self, ...

    单链表实现从小到大排序

    本主题将深入探讨如何使用单链表实现从小到大排序。 首先,我们需要定义一个节点类(Node Class)。这个类通常包含两个部分:数据域(data field)用于存储元素值,和指针域(next field)用于链接到下一个节点。...

    数据结构:拆分单链表代码

    在本文中,我们将深入理解单链表的结构,学习如何创建、遍历以及拆分单链表。 首先,我们来理解单链表的基本概念。单链表由一系列节点组成,每个节点包含两部分:数据域,用于存储数据;指针域,用于存储指向下一个...

    50个必会的数据结构及算法实现源码

    数组 问题:实现一个支持动态扩容的数组 问题:实现一个大小固定的有序数组,支持动态增删改操作 问题:实现两个有序数组合并为一个有序数组 ...资源中包括常用语言:c、java、python、go等实现源码,方便参考学习。

    单链表的基本操作及实现

    单链表是一种基础的数据结构,它在...总的来说,理解和掌握单链表的基本操作对于学习数据结构和算法至关重要,它是许多高级数据结构如双链表、哈希表等的基础。通过熟悉这些操作,能够为编写高效的程序打下坚实的基础。

    实验三 单链表的插入

    在进行这个实验时,学生可能需要编写代码来实现这些步骤,例如使用C++、Java或Python等编程语言。代码通常会包含一个链表类,其中定义了插入方法。这个方法会接受插入位置和数据作为参数,然后按照上述步骤操作。...

    学习数据结构路线.docx

    学习数据结构是一个逐步的过程,通常包括理解基本的数据结构概念、实现这些结构以及掌握相关的算法。下面是一个建议的学习路线,可以帮助你系统地学习数据结构: 1. 基础准备 编程语言基础:选择一种编程语言(如 ...

    一个简单的单链表作业

    总的来说,理解和熟练掌握单链表的这些基本操作是学习数据结构和算法的基础,对于提升编程能力非常有帮助。在实际编程中,单链表经常与其他数据结构结合使用,如栈、队列等,以解决更复杂的问题。所以,这个作业是一...

    单链表双链表python示例.rar

    本资源“单链表双链表python示例.rar”包含了关于链表的Python实现,特别是单链表和双链表。 单链表是一种每个节点包含数据和指向下一个节点的引用的数据结构。在Python中,我们可以使用类来表示链表的节点,如下所...

    大一大作业:C和C++和单链表实现图书管理系统.zip

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...

    数据结构与算法 python语言

    - **Python实现**: 使用Python实现链接表的具体方法。 #### 三、线性表变形和应用 - **循环单链表**: 概念及其实现方法。 - **双链表**: 双链表的概念和一个实现案例。 - **单链表排序**: 单链表元素的排序算法,...

Global site tag (gtag.js) - Google Analytics