创建单向链表有很多种方式,个人觉得从数组创建比较方便,不多说,直接上代码
class linkNode():
"""
链表节点类
"""
def __init__(self,dat):
self.dat = dat
self.next = None
class sigLink():
"""
this class is used to record a link
self.length:用于记录该链表的长度
self.head:该链表的头部
self.tail:用于记录该链表的尾部。记录尾部比较麻烦,维护部分基本也没做
"""
def __init__(self,item):
"""
item:一维数组,存放该单链表的数组
"""
self.length = len(item)
if self.length<=0:
return
i = 0
self.head = linkNode(item[i])
self.tail = self.head
i += 1
while i<self.length:
self.tail.next = linkNode(item[i])
self.tail = self.tail.next
i += 1
def printlink(self):
"""
正序打印该链表
"""
if self.head==None:
print("这是一条空链表")
p = self.head
while p!=None:
print(p.dat,end=' ')
p = p.next
def postPrintlink(self,root):
"""
倒序打印该链表
"""
if root!=None:
if root.next != None:
self.postPrintlink(root.next)
print(root.dat,end = ' ')
def linkAppend(self,num):
"""
在链表尾部追加节点
"""
self.tail.next = linkNode(num)
self.tail = self.tail.next
self.length += 1
def getlength(self):
"""
获取链表的长度
"""
return self.length
def insertNode(self, index, num):
"""
在链表中间插入节点
index:插入点的序号
num:插入点的值
"""
if index>self.length:
print("index参数超出范围")
return
if index==self.length:
self.linkAppend(num)
return
if index == 0:
p = linkNode(num)
p.next = self.head
self.head = p
self.length += 1
return
ptemp = self.head
while index>1:
ptemp = ptemp.next
index -= 1
p = linkNode(num)
p.next = ptemp.next
ptemp.next = p
self.length += 1
a = sigLink([1,2,3,4,5,6,7])
a.insertNode(2, 10)
a.printlink()
转载于:https://my.oschina.net/u/3464640/blog/983605
分享到:
相关推荐
在“单向链表”这个压缩包中,我们可能找到一个实现了上述功能的源代码文件,比如包含`insertAtEnd`、`deleteNode`、`printList`和`sortList`等函数的实现。通过阅读和分析这些代码,学生可以深入理解链表的内部工作...
【Python实现单向链表详解】 链表是一种重要的数据结构,它不同于数组,不需预先定义大小,可以动态地增删元素。链表中的每个元素称为“节点”,每个节点包含数据域(存储数据)和指针域(指向下一个节点)。在...
在Python中,我们可以自定义链表结构来实现单向链表和双向链表。 单向链表(Single Linked List)的特点是每个节点只包含一个指向下一个节点的引用。在单向链表中,遍历只能从头节点开始,按顺序访问每个节点,无法...
本文实例讲述了python实现获取单向链表倒数第k个结点的值。分享给大家供大家参考,具体如下: #初始化链表的结点 class Node(): def __init__(self,item): self.item = item self.next = None #传入头结点,获取...
在"第一、二章"的压缩文件中,很可能包含了实现单向链表和双向链表操作的C、C++、Java或Python等语言的源代码示例。这些示例程序可能涉及了初始化链表、插入新节点、删除指定节点、查找特定元素、打印链表内容等功能...
单向链表是最简单的链表类型,其特点是每个节点只能向前遍历,不能向后。在某些情况下,我们需要对链表进行倒序操作,即将链表的顺序反转,例如将A->B->C转换为C->B->A。这个过程是Intel面试中常见的一个问题,旨在...
单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 表元素域elem...
4-12 单向循环链表删除元素复习及链表扩展 4-13 双向链表及添加元素 4-14 双向链表删除元素 五、排序与搜索 5-01 排序算法的稳定性 5-02 冒泡排序及实现 5-03 选择排序算法及实现 5-04 插入算法 5-05 插入...
单向链表只能向前移动,而双向链表允许向前和向后移动。循环链表的最后一个节点指回列表的开头,形成一个环。 Python的内置数据结构如列表(list)已经实现了高效的随机访问,但在插入和删除操作上,特别是对于...
总之,Python实现反转部分单向链表的关键在于理解链表结构、正确处理边界条件以及巧妙地改变节点之间的指针关系。这不仅锻炼了对链表操作的掌握,也提升了对算法复杂度的理解。通过这个练习,开发者能够更好地应对...
单向循环链表是一种特殊的数据结构,它结合了单向链表的特点和循环链表的功能。与普通的单向链表不同,单向循环链表中的最后一个节点不是指向`None`,而是指向链表的第一个节点(即头节点),形成一个闭环。 ### ...
本篇文章将详细讲解如何在Python中实现针对给定单链表删除指定节点的方法,以及相关的单链表操作技巧。 首先,我们需要定义一个`Node`类来表示链表中的节点。这个类包含两个属性:`num`用于存储数据,`next`则指向...
单向循环链表(Singly Circular Linked List)是一种特殊的链表,它与普通的单向链表非常相似,唯一的区别在于尾节点的next指针指向头节点而不是空。这样就形成了一个循环,使得链表中的节点可以通过循环遍历而不会...
3. **插入和删除操作**:插入和删除节点的操作与普通单向链表类似,但需要考虑链表是否为空及插入位置的判断。 **单向循环链表常见操作** 1. **创建链表**:初始化链表,通常创建一个节点作为链表的首节点。 2. **...
本文实例讲述了Python实现的数据结构与算法之链表。分享给大家供大家参考。具体分析如下: 一、概述 链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的...
【Python 单向链表的基本操作细节】 链表是一种数据结构,它不同于数组,它将数据元素分散在内存的不同位置,而不是连续存储。单向链表是链表的一种形式,其中每个节点包含一个数据元素和一个指向下一个节点的引用...
本文实例讲述了python单向链表的基本实现与使用方法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 class Node(): def __init__(self,item): #初始化这个节点,值和下一个指向 self....