class Node(object):
# 定义一个结点类,有信息域data,指针域next.
def __init__(self, data, p = None):
self.data = data
self.next = p
class SingelLinkList(object):
def __init__(self):
self.head = None
# 创建单链表
def creat(self, data):
self.head = Node(data[0])
p = self.head
for i in data[1:]:
p.next = Node(i)
p = p.next
# 打印单链表
def print(self):
if self.is_empty():
return print('空链表')
else:
p = self.head
while p != None:
print(p.data)
p = p.next
# 获取链表长度
def getlen(self):
p = self.head
count = 0
while p != None:
count += 1
p = p.next
return count
# 判断链表是否为空
def is_empty(self):
return self.getlen() == 0
# 在链表后插入数据
def addend(self, data):
p = self.head
if self.is_empty():
self.head = Node(data)
else:
while p.next != None:
p = p.next
p.next = Node(data)
# 在链表头插入数据
def addfirst(self, data):
node = Node(data) # 一定记得实例化
node.next = self.head
self.head = node
# 获取链表指定索引的数据
def getdata(self, index):
if self.is_empty():
return print('空链表')
if index < 0 or index >= self.getlen():
return print('索引位置错误')
else:
p = self.head
num = 0
while num != index:
num += 1
p = p.next
return p.data
# 获取链表指定数据的索引
def getindex(self, data):
if self.is_empty():
return print('空链表')
else:
p = self.head
index = 0
while p != None:
if p.data == data:
return index
p = p.next
index += 1
# 在链表指定位置插入数据
def insert(self, index, data):
if self.is_empty():
return print('空链表')
if index < 0:
return self.addfirst(data)
if index >= self.getlen():
return self.addend(data)
else:
p = self.head
count = 0
while count < index - 1:
count += 1
p = p.next
node = Node(data)
node.next = p.next
p.next = node
# 删除链表指定位置的数据
def deldata(self, index):
if self.is_empty():
return print('空链表')
if index < 0 or index > self.getlen():
return print('索引不存在')
else:
p = self.head
count = 0
if count < index - 1:
p = p.next
count += 1
p.next = p.next.next
# 替换链表指定位置的数据
def updata(self, index , data):
if self.is_empty():
return print('空链表')
if index < 0 or index >= self.getlen():
return print('索引不存在')
else:
p = self.head
count = 0
while count < index:
p = p.next
count += 1
p.data = data
# 清空链表
def clear(self):
self.head = None
结果如下: