Khi cần tạo một danh sách được liên kết kép và hiển thị các phần tử theo thứ tự đảo ngược, 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, đảo ngược các nút và in các nút trong danh sách được liên kết.
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.prev = None self.data = my_data self.next = None class reverse_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 reverse_vals(self): curr = self.head; while(curr != None): temp = curr.next curr.next = curr.previous curr.previous = temp curr = curr.previous temp = self.head self.head = self.tail self.tail = temp def print_it(self): curr = self.head if (self.head == None): print("The list is empty") return print("The nodes are :") while curr != None: print(curr.data) curr = curr.next my_instance = reverse_list() print("Elements are being added to the list") my_instance.add_data(10) my_instance.add_data(14) my_instance.add_data(24) my_instance.add_data(17) my_instance.add_data(22) my_instance.print_it() print("The reversed nodes in the doubly linked list are : ") my_instance.reverse_vals() my_instance.print_it()
Đầu ra
Elements are being added to the list The nodes are : 10 14 24 17 22 The reversed nodes in the doubly linked list are : The nodes are : 22 17 24 14 10
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 có tên 'add_data' được xác định, được sử dụng để thêm dữ liệu vào danh sách được liên kết kép.
- Một phương thức khác có tên là "reverse_node" được xác định, giúp đảo ngược thứ tự của các nút trong danh sách được liên kết kép.
- Một phương thức khác có tên là 'print_it' được xác định, phương thức này sẽ hiển thị các nút của danh sách liên kết vòng tròn.
- Một đối tượng của lớp 'reverse_list' được tạo và các phương thức được gọi trên nó để đảo ngược các nút của danh sách được liên kết kép.
- Một phương thức 'init' được xác định, rằng các nút gốc, đầu và cuối của danh sách được liên kết kép thành Không.
- Phương thức "reverse_vals" được gọi.
- Nó lặp lại qua danh sách được liên kết kép và đảo ngược danh sách.
- Điều này được hiển thị trên bảng điều khiển bằng phương thức "print_it".