Python
 Computer >> コンピューター >  >> プログラミング >> Python

単一リンクリストが回文であるかどうかを確認するPythonプログラム


単一リンクリストが回文であるかどうかを確認する必要がある場合、要素を追加し、前のノードを取得し、回文が形成されているかどうかを確認するメソッドが定義されています。

以下は同じのデモンストレーションです-

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')

出力

Enter elements to the linked list: 89 90 78 90 89
The linked list is palindromic in nature

説明

  • 「Node」クラスが作成されます。

  • 必要な属性を持つ別の「LinkedList_struct」クラスが作成されます。

  • 最初の要素を初期化するために使用される「init」関数があります。つまり、「head」を「None」に、最後のノードを「None」に初期化します。

  • 「add_elements」という名前の別のメソッドが定義されています。これは、リンクリスト内の前のノードをフェッチするために使用されます。

  • リンクリストデータをコンソールに表示するために使用される「get_previous_node」という名前の別のメソッドが定義されています。

  • 「check_palindrome」という名前のメソッドが定義されています。このメソッドは、最初と最後の要素を比較します。同じでない場合は、リストが本質的に回文ではないと判断します。

  • 「LinkedList_struct」クラスのオブジェクトが作成されます。

  • リンクリスト内の要素に対してユーザー入力が行われます。

  • 要素がリンクリストに追加されます。

  • このリンクリストでは、「check_palindrome」メソッドが呼び出されます。

  • 関連する出力がコンソールに表示されます。


  1. Pythonの回文リンクリスト

    リンクリストがあるとします。リスト要素がアパリンドロームを形成しているかどうかを確認する必要があります。したがって、リスト要素が[1,2,3,2,1]のような場合、これは回文です。 これを解決するには、次の手順に従います- 高速:=ヘッド、低速:=ヘッド、回転:=なし、フラグ:=1 ヘッドが空の場合は、trueを返します 高速で次の高速が利用可能です next of fastが使用可能な場合は、フラグ:=0を設定し、ループを解除します fast:=next of the next of fast temp:=遅い、遅い:=次の遅い 次のtemp:

  2. リストが空かどうかをチェックするPythonプログラム?

    空のリストが与えられました。私たちの仕事は、このリストが空かどうかを確認することです。ここでチェックするのは暗黙のチェック方法です。 アルゴリズム Step 1: We take an empty list. Step 2: then check if list is empty then return 1 otherwise 0. サンプルコード # Python code to check for empty list def checklist(A): if not A: return 1 else: return 0 # Driver