Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để kiểm tra xem một danh sách được liên kết đơn lẻ có phải là một Palindrome hay không

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.