1.定义链表节点类
定义链表中每个节点类ListNode,val表示链表节点的取值,next表示该节点下一跳的位置。
class ListNode(object):
def __init__(self, val, next_node):
self.val = val
self.next = next_node
2.定义链表类,并完成基本方法
定义链表类LinkList,head标注该链表的头节点。并实现链表基础操作。
create_list(self, data):初始化链表,data为数组形式。
remove_list_node(self, data):删除链表中节点取值为data的节点,data为单个取值。
print_list(self):遍历打印链表。
add_node(self, key, data):向链表中添加元素,在链表中取值为key的节点后,添加取值为data的节点。
class LinkList(object):
def __init__(self):
self.head = None
def create_list(self, data):
self.head = ListNode(data[0], None)
p = self.head
for i, d in enumerate(data):
if i != 0:
p.next = ListNode(d, None)
p = p.next
def remove_list_node(self, data):
p = self.head
if self.head.val == data:
self.head = self.head.next
return True
while p.next is not None:
if p.next.val == data:
q = p.next
p.next = q.next
del q
return True
p = p.next
def print_list(self):
p = self.head
while p is not None:
print(p.val, end='')
p = p.next
print(' ')
def add_node(self, key, data):
p = self.head
while p is not None:
if p.val == key:
q = p.next
p.next = ListNode(data, q)
return True
p = p.next
3.实例化链表,测试用例
data1 = [1, 2, 4, 5, 6]
L = LinkList()
L.create_list(data1)
L.print_list()
L.remove_list_node(1)
L.add_node(1, 2)
L.add_node(2, 3)
L.print_list()
输出结果为:
12456
23456