Khi cần tìm nút có giá trị lớn nhất và nhỏ nhất trong danh sách liên kết đôi, ta duyệt từ head đến tail so sánh giá trị.
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(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.tail.next = new_node
new_node.previous = self.tail
self.tail = new_node
self.tail.next = None
def min_node(self):
curr = self.head
if self.head is None:
print("Danh sách rỗng")
return 0
min_val = self.head.data
while curr is not None:
if min_val > curr.data:
min_val = curr.data
curr = curr.next
return min_val
def max_node(self):
curr = self.head
if self.head is None:
print("Danh sách rỗng")
return 0
max_val = self.head.data
while curr is not None:
if curr.data > max_val:
max_val = curr.data
curr = curr.next
return max_val
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 danh sách liên kết đôi")
my_instance.add_data(10)
my_instance.add_data(24)
my_instance.add_data(54)
my_instance.add_data(77)
my_instance.add_data(92)
my_instance.print_it()
print("Nút giá trị lớn nhất:")
print(my_instance.max_node())
print("Nút giá trị nhỏ nhất:")
print(my_instance.min_node())
Kết quả
Thêm phần tử vào danh sách liên kết đôi Các nút trong danh sách liên kết đôi: 10 24 54 77 92 Nút giá trị lớn nhất: 92 Nút giá trị nhỏ nhất: 10
Giải thích
- Lớp
Nodevàdouble_listcơ bản. min_nodeduyệt danh sách, cập nhật min_val.max_nodeduyệt danh sách, cập nhật max_val.- Thêm 5 phần tử, in danh sách, in max và min.