Khi cần chèn nút mới vào đầu danh sách liên kết đôi, ta cập nhật head và con trỏ prev của head cũ.
Ví dụ
class Node:
def __init__(self, my_data):
self.prev = None
self.data = my_data
self.next = None
class double_list:
def __init__(self):
self.head = None
self.tail = None
def add_data_at_start(self, my_data):
new_node = Node(my_data)
if self.head is None:
self.head = self.tail = new_node
self.head.previous = None
self.tail.next = None
else:
self.head.previous = new_node
new_node.next = self.head
new_node.previous = None
self.head = new_node
def print_it(self):
curr = self.head
if self.head is None:
print("Danh sách rỗng")
return
print("Các nút trong danh sách liên kết đôi:")
while curr is not None:
print(curr.data)
curr = curr.next
my_instance = double_list()
print("Thêm phần tử vào đầu danh sách liên kết đôi")
my_instance.add_data_at_start(10)
my_instance.print_it()
my_instance.add_data_at_start(24)
my_instance.print_it()
my_instance.add_data_at_start(54)
my_instance.print_it()
my_instance.add_data_at_start(77)
my_instance.print_it()
my_instance.add_data_at_start(92)
my_instance.print_it()
Kết quả
Thêm phần tử vào đầu danh sách liên kết đôi Các nút trong danh sách liên kết đôi: 10 Các nút trong danh sách liên kết đôi: 24 10 Các nút trong danh sách liên kết đôi: 54 24 10 Các nút trong danh sách liên kết đôi: 77 54 24 10 Các nút trong danh sách liên kết đôi: 92 77 54 24 10
Giải thích
- Lớp
Nodevàdouble_listnhư trước. add_data_at_start: nếu rỗng, head=tail=new_node; ngược lại new_node.next = head, head.prev = new_node, head = new_node.- Demo thêm 10,24,54,77,92 lần lượt vào đầu, in sau mỗi lần.