【数据结构】链表的python实现
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表中的元素可以存在内存中的任何位置。单向链表的节点包含该节点的元素值和下一个节点的地址,双向链表的节点包括该节点的元素值、上一个节点的地址和下一个节点的地址。
一、单向链表的python实现
class LNode(object):
#结点初始化函数, self.val是当前节点的数据,self.next是下一个节点的地址
#为了方便传参, 设置self.next的默认值为None
def __init__(self,val):
self.val = val #节点数据
self.next = None #下一个节点的地址
class LinkList(object):
#初始化head
def __init__(self):
self.head = None
#初始化链表,将data(list)中的数据变为链表的数据结构
def initList(self,data):
#创建头结点
self.head = LNode(data[0])
p = self.head
#为data中的数据构造节点,并加入链表中
for i in data[1:]:
node = LNode(i)
p.next = node
p = p.next
#判断链表是否为空
def isEmpty(self):
if self.head == None:
print('LinkList is Empty')
return True
else:
return False
#获取链表长度
def getLength(self):
#如果链表为空,返回长度为0
if self.isEmpty():
return 0
#如果链表不为空,计算链表长度
else:
p = self.head
length = 0
while p:
length += 1
p = p.next
return length
#遍历链表
def trave(self):
value = []
if self.isEmpty():
print('链表为空链表')
return False
else:
p = self.head
while p:
print(p.val)
value.append(p.val)
p = p.next
return value
#链表插入数