链表类代码:
class SingleLinkList:
def __init__(self, e):
self.e = e
self.count = 0
self.head = None
self.data = None
def remove(self, e):
if self.head.data is e:
self.head.data = None
else:
tempNode = self.head
preNode = self.head
try:
while tempNode.data is not e:
preNode = tempNode
tempNode = tempNode.next
except AttributeError:
print("链表中没有此数据: "+str(e))
return
preNode.next = tempNode.next
tempNode.next = None
self.count -= 1
def add(self, e):
# 定义一个节点保存要添加的数据
newNode = SingleLinkList.Node(e, None)
# 判断是否为第一个要添加的节点
if self.head is None:
# 第一个要添加的节点作为头结点
self.head = newNode
else:
# 定义中间变量用于保存临时节点
tempNode = self.head
# 从头结点开始遍历,找到指针区为None的节点
while tempNode.next is not None:
# 指针区不为None,更新临时节点信息为下一节点
tempNode = tempNode.next
# 找到指针区为None的节点,跳出循环,更新此节点指针区指向新增的节点
tempNode.next = newNode
# 更新链表节点个数
self.count += 1
def getInfo(self):
tempNode = self.head
infoArr = list()
for i in range(0, self.count):
infoArr.append(tempNode.data)
tempNode = tempNode.next
print(infoArr)
class Node:
def __init__(self, data, next):
self.data = data
self.next = next
测试类代码:
def test():
ssl = SingleLinkedList.SingleLinkList("张三")
ssl.add("张三")
ssl.add("李四")
ssl.add(None)
ssl.add("王五")
ssl.getInfo()
ssl.remove(None)
ssl.remove("李四")
ssl.remove("李")
ssl.getInfo()
test()
JAVA实现单链表请点击这里