要定义一个单链表,首先定义链表元素: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具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
数组 问题:实现一个支持动态扩容的数组 问题:实现一个大小固定的有序数组,支持动态增删改操作 问题:实现两个有序数组合并为一个有序数组 ...资源中包括常用语言:c、java、python、go等实现源码,方便参考学习。
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
单链表逆置是数据结构学习和...3. **源代码示例**:在CSDN技术社区和其他代码分享网站上,程序员们提供了大量C、C++、Java、Python等多种编程语言实现单链表逆置的源代码。这些代码资源能够帮助学习者直观理解算法流
AlgorithmWithLeetCode 本仓库主要记录自己的一个学习路径,同时刷题的过程中也会... :利用一个单链表来实现栈的数据结构。只针对栈顶元素进行操作,可借用单链表的头可以让所有栈的操作在O(1)的完成。 嘘……工作
给单链表加一js实现欢迎来到 100 天 介绍 这是伴随我决定进行 100 天编码挑战的 repo,在那里我学习和创造了很棒的东西,使用 Python、Javascript、C# 和 go。 让我们一起学习和创造很棒的东西。 内容 第 1/100 天:...
该代码由Amit Bansal在学习数据结构和算法时编写。 参考GFG,NPTEL,CLRS。 该存储库包含: 单链表。 添加两个数字表示的链表。 气泡在链接列表中排序合并在链接列表中排序合并排序链表反向使用或不使用堆栈的...
Java单链表源码分析学习指导 两个人策划了一份学习指南 数学 结石 线性代数 ( ) 概率与统计 () 麻省理工学院概率(数学,慢慢来,这对数学有好处)(视频): 一般(未分类) (, ) () ( ) () () - 需要免费注册 () ...
出于研究目的,我正在Python中实现数据结构和算法。 个人博客: : 算法 种类 图形 -SSC 未分类 贪心算法-背包问题 动态编程-背包问题 数据结构 单链表 双链表 堆 队列 循环队列 圆形双端队列 堆 特里
各种算法和数据结构的实现已经通过动画幻灯片进行了演示和实现。 它涵盖了许多关于算法和数据结构的面试室问题。 问题和解决方案由- 动画幻灯片。 (为了使算法可视化更快) IDE 上的编码算法。 该课程涵盖以下主题 ...
添加 Python 代码,学习极客时间的数据结构与算法之美课程的笔记和代码,以及 python 代码实现的 leetcode 题目。 已完成课程: , , C++ 2016-12 记录 学习数据结构和算法时的一些练习代码。 有关算法性能的基本...
学习结构体排序查找以及链表的使用#include #include #include struct student { int num; double score; char name[100]; struct student *next; }; int cmp(const void *a,const void *b) { struct student *...
这样的一大好处是,读者可以边看书,边实现自己的代码,然后提交到网站上验证自己的想法是否正确。AlgoHub的使命是成为最好的算法学习和交流平台。AlgoHub囊括了 POJ, ZOJ, leetcode, HackerRank 等网站的经典题目...