Khi cần tìm kiếm một phần tử trong danh sách được liên kết kép, một lớp ‘Node’ cần được tạo. Trong lớp này, có ba thuộc tính, dữ liệu có trong nút, quyền truy cập vào nút tiếp theo của danh sách được liên kết và quyền truy cập vào nút trước đó của danh sách được liên kết.
Một lớp khác cần được tạo sẽ có chức năng khởi tạo và phần đầu của nút sẽ được khởi tạo thành 'Không có' bên trong lớp này.
Người dùng xác định nhiều phương pháp để thêm nút vào danh sách được liên kết, hiển thị các nút đó và tìm kiếm một nút cụ thể trong danh sách được liên kết.
Trong một danh sách được liên kết kép, các nút có các con trỏ. Nút hiện tại sẽ có một con trỏ đến nút tiếp theo cũng như nút trước đó. Giá trị cuối cùng trong danh sách sẽ có giá trị ‘NULL’ trong con trỏ tiếp theo. Nó có thể được đi ngang theo cả hai hướng.
Dưới đây là một minh chứng cho điều tương tự -
Ví dụ
Nútclass Node: def __init__(self, my_data): self.previous = 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 == 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 print_it(self): curr = self.head if (self.head == None): print("The list is empty") return print("The nodes in the doubly linked list are :") while curr != None: print(curr.data) curr = curr.next def search_node(self, val_to_search): i = 1; flag_val = False; curr = self.head; if(self.head == None): print("List is empty") return while(curr != None): if(curr.data == val_to_search): flag_val = True break curr = curr.next i = i + 1 if(flag_val): print("The node is present in the list at position : ") print(i) else: print("The node isn't present in the list") my_instance = double_list() print("Elements are being added to the doubly linked list") my_instance.add_data(10) my_instance.add_data(24) my_instance.add_data(54) my_instance.add_data(77) my_instance.add_data(24) my_instance.add_data(0) my_instance.print_it() print("The element 77 is being searched... ") my_instance.search_node(77) print("The element 7 is being searched... ") my_instance.search_node(7)
Đầu ra
Elements are being added to the doubly linked list The nodes in the doubly linked list are : 10 24 54 77 24 0 The element 77 is being searched... The node is present in the list at position : 4 The element 7 is being searched... The node isn't present in the list
Giải thích
- Lớp 'Node' đã được tạo.
- Một lớp khác với các thuộc tính bắt buộc được tạo.
- Một phương thức khác có tên 'add_data' được xác định, được sử dụng để thêm dữ liệu vào danh sách liên kết vòng tròn.
- Một phương thức khác có tên là "search_node" được xác định, phương thức này nhận một tham số cần được tìm kiếm trong danh sách được liên kết kép.
- Nó tìm kiếm phần tử và trả về chỉ mục
- Một phương thức khác có tên là 'print_it' được xác định dùng để hiển thị dữ liệu danh sách được liên kết trên bảng điều khiển.
- Một đối tượng của lớp 'double_list' được tạo và các phương thức được gọi trên đó để thêm dữ liệu.
- Phương thức 'search_node' được gọi.
- Nó lặp lại qua các nút trong danh sách được liên kết và cung cấp chỉ mục của phần tử nếu được tìm thấy.
- Điều này được hiển thị trên bảng điều khiển bằng phương thức "print_it".