Khi cần tìm kiếm một phần tử trong danh sách liên kết vòng tròn, một lớp ‘Node’ cần được tạo. Trong lớp này, có hai thuộc tính, dữ liệu có trong nút và quyền truy cập vào nút tiếp theo của danh sách được liên kết.
Trong danh sách liên kết hình tròn, phần đầu và phần sau nằm liền kề nhau. Chúng được kết nối để tạo thành một vòng kết nối và không có giá trị "NULL" trong nút cuối cùng. 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ó'.
Người dùng xác định nhiều phương thức để thêm nút vào danh sách được liên kết, tìm kiếm một nút cụ thể trong danh sách được liên kết và in các giá trị của nút.
Dưới đây là một minh chứng cho điều tương tự -
Ví dụ
Nútclass Node: def __init__(self,data): self.data = data self.next = None class list_creation: def __init__(self): self.head = Node(None) self.tail = Node(None) self.head.next = self.tail self.tail.next = self.head def add_data(self,my_data): new_node = Node(my_data) if self.head.data is None: self.head = new_node self.tail = new_node new_node.next = self.head else: self.tail.next = new_node self.tail = new_node self.tail.next = self.head def search_value(self,elem_to_search): curr = self.head; i = 1; flag_val = False; if(self.head == None): print("The list is empty"); else: while(True): if(curr.data == elem_to_search): flag_val = True; break; curr = curr.next; i = i + 1; if(curr == self.head): break; if(flag_val): print("The element is present in list at position : " + str(i)); else: print("The element is not present in list"); def print_it(self): curr = self.head if self.head is None: print("The list is empty"); return; else: print(curr.data) while(curr.next != self.head): curr = curr.next print(curr.data) print("\n") class circular_linked_list: my_cl = list_creation() print("Nodes are being added to the list") my_cl.add_data(21) my_cl.add_data(54) my_cl.add_data(78) my_cl.add_data(99) my_cl.add_data(27) print("The list is :") my_cl.print_it() print("Value 99 is being searched") my_cl.search_value(99) print("Value 0 is being searched") my_cl.search_value(0)
Đầu ra
Nodes are being added to the list The list is : 21 54 78 99 27 Value 99 is being searched The element is present in list at position : 4 Value 0 is being searched The element is not present in 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 là 'search_value' được xác định, được sử dụng để tìm kiếm một phần tử cụ thể trong danh sách được liên kết.
- 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 'list_creation' được tạo và các phương thức được gọi trên đó để thêm dữ liệu.
- Phương thức 'init' được xác định, rằng nút đầu tiên và nút cuối cùng của danh sách liên kết vòng tròn thành Không.
- Phương thức 'search_value' được gọi.
- Nó lặp qua danh sách và kiểm tra xem có tìm thấy phần tử cần tìm hay không.
- Nếu nó được tìm thấy, chỉ mục của nó sẽ được hiển thị.
- Điều này được hiển thị trên bảng điều khiển bằng phương thức "print_it".