Khi cần kiểm tra xem một danh sách được liên kết đơn lẻ có phải là palindrome hay không, các phương pháp để thêm một phần tử, lấy nút trước đó và kiểm tra xem một palindrome có được xác định hay không.
Dưới đây là một minh chứng về điều tương tự -
Ví dụ
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList_struct:
def __init__(self):
self.head = None
self.last_node = None
def add_elements(self, data):
if self.last_node is None:
self.head = Node(data)
self.last_node = self.head
else:
self.last_node.next = Node(data)
self.last_node = self.last_node.next
def get_previous_node(self, ref_node):
curr = self.head
while (curr and curr.next != ref_node):
curr = curr.next
return curr
def check_palindrome(my_list):
beg = my_list.head
end = my_list.last_node
while (beg != end and end.next != beg):
if beg.data != end.data:
return False
beg = beg.next
end = my_list.get_previous_node(end)
return True
my_instance = LinkedList_struct()
my_input = input('Enter elements to the linked list: ').split()
for data in my_input:
my_instance.add_elements(int(data))
if check_palindrome(my_instance):
print('The linked list is palindromic in nature')
else:
print('The linked list is not palindromic in nature') Đầu ra
Enter elements to the linked list: 89 90 78 90 89 The linked list is palindromic in nature
Giải thích
-
Lớp 'Node' được tạo.
-
Một lớp ‘LinkedList_struct’ khác với các thuộc tính bắt buộc được tạo.
-
Nó có chức năng ‘init’ được sử dụng để khởi tạo phần tử đầu tiên, tức là ‘head’ thành ‘None’ và nút cuối cùng thành ‘None’.
-
Một phương thức khác có tên là ‘add_elements’ được xác định, được sử dụng để tìm nạp nút trước đó trong danh sách được liên kết.
-
Một phương thức khác có tên là ‘get_previous_node’ đượ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.
-
Phương thức có tên ‘check_palindrome’ được xác định, so sánh phần tử đầu tiên và phần tử cuối cùng, nếu chúng không giống nhau, nó xác định rằng danh sách không phải là palindromic về bản chất.
-
Một đối tượng của lớp ‘LinkedList_struct’ được tạo.
-
Đầu vào của người dùng được sử dụng cho các phần tử trong danh sách được liên kết.
-
Các phần tử được thêm vào danh sách liên kết.
-
Phương thức ‘check_palindrome’ được gọi trong danh sách được liên kết này.
-
Đầu ra có liên quan được hiển thị trên bảng điều khiển.