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

特定の単一リンクリストを循環リストに変換するPythonプログラム


単一リンクリストを循環リンクリストに変換する必要がある場合は、「convert_to_circular_list」という名前のメソッドを定義して、最後の要素が最初の要素を指すようにし、それによって本質的に循環させます。

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

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 convert_to_circular_list(my_list):
   if my_list.last_node:
      my_list.last_node.next = my_list.head

def last_node_points(my_list):
   last = my_list.last_node
      if last is None:
         print('The list is empty...')
         return
      if last.next is None:
         print('The last node points to None...')
      else:
         print('The last node points to element that has {}...'.format(last.next.data))

my_instance = LinkedList_struct()

my_input = input('Enter the elements of the linked list.. ').split()
for data in my_input:
   my_instance.add_elements(int(data))

last_node_points(my_instance)

print('The linked list is being converted to a circular linked list...')
convert_to_circular_list(my_instance)

last_node_points(my_instance)

出力

Enter the elements of the linked list.. 56 32 11 45 90 87
The last node points to None...
The linked list is being converted to a circular linked list...
The last node points to element that has 56...

説明

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

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

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

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

  • 「convert_to_circular_list」という名前の別のメソッドが定義されており、最後のノードを最初のノードにポイントして、本質的に循環させます。

  • 「last_node_points」という名前のメソッドが定義されています。このメソッドは、リストが空かどうか、最後のノードが「なし」を指しているかどうか、またはリンクリストの特定のノードを指しているかどうかを確認します。

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

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

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

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

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


  1. Javascriptの循環としての単一リンクリスト

    単一リンクリストでは、最後のノードの次のポインタが最初のノードを指します。

  2. Pythonでリンクリストをジグザグ二分木に変換するプログラム

    単一リンクリストがあるとすると、次のルールを使用してそれをバイナリツリーパスに変換する必要があります- リンクリストの先頭はルートです。 後続の各ノードは、値が小さい場合は親の左の子になり、それ以外の場合は右の子になります。 したがって、入力が[2,1,3,4,0,5]の場合、出力はになります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これはノードを取ります ノードがnullの場合、 nullを返す root:=ノードの値と同じ値のツリーノードを作成します 次のノードがnullでない場合、 ノードの次の値<ノードの値の場合、 ルートの左側