参考:www.bilibili.com/video/BV1E4…
python实现
class Node:
def __init__(self, data=0, nextNode=None):
self.data = data
self.next = nextNode
class List:
def __init__(self, head=None):
self.head = head
self.length = 0
def add(self, data):
if not self.head:
self.head = Node(data)
else:
temp = self.head
while temp.next:
temp = temp.next
temp.next = Node(data)
self.length += 1
def del_data(self, data):
if self.head:
if data == self.head.data:
self.head = self.head.next
else:
temp = self.head
while temp.next:
if temp.next.data == data:
temp.next = temp.next.next
return
temp = temp.next
print("没有找到要删除的节点")
self.length -= 1
else:
print("空链表")
def insert(self, data, position=0):
if position > self.length or position < 0:
print("position的大小必须在{}和{}之间".format(0, self.length - 1))
return
if position == 0:
temp = self.head
self.head = Node(data)
self.head.next = temp
else:
temp = self.head
for count in range(position - 1):
temp = temp.next
node = Node(data)
node.next = temp.next
temp.next = node
self.length += 1
def reverse(self):
print("reverse")
if not self.head:
print("链表为空")
return
else:
pre = None
temp = self.head
while temp:
next_node = temp.next
temp.next = pre
pre = temp
temp = next_node
self.head = pre
def print_list(self):
temp = self.head
while temp:
print(temp.data, end="->")
temp = temp.next
print()
def is_exist(self, data):
temp = self.head
while temp:
if data == temp.data:
print("存在")
return
temp = temp.next
print("不存在")
l = List()
l.add(1)
l.add(2)
l.add(3)
l.del_data(1)
l.del_data(2)
l.add(1)
l.add(2)
l.print_list()
l.insert(4)
l.print_list()
print(l.length)
l.insert(7)
l.print_list()
print(l.length)
l.insert(6, 2)
l.print_list()
print(l.length)
l.is_exist(3)
l.print_list()
l.reverse()
l.print_list()
l.add(8)
l.add(9)
l.print_list()
l.del_data(8)
l.del_data(6)
l.print_list()
l.reverse()
l.print_list()