创建单向链表有很多种方式,个人觉得从数组创建比较方便,不多说,直接上代码
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.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()