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

リンクリストを使用してキューデータ構造を実装するPythonプログラム


リンクリストを使用してキューデータ構造を実装する必要がある場合は、リンクリストに要素を追加(エンキュー操作)する方法と、リンクリストの要素を削除(デキュー操作)する方法を定義します。

>

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

class Node:
   def __init__(self, data):
   self.data = data
   self.next = None

class Queue_structure:
   def __init__(self):
      self.head = None
      self.last = None

   def enqueue_operation(self, data):
      if self.last is None:
         self.head = Node(data)
         self.last = self.head
      else:
         self.last.next = Node(data)
         self.last = self.last.next

   def dequeue_operation(self):
      if self.head is None:
         return None
      else:
         val_returned = self.head.data
         self.head = self.head.next
         return val_returned

my_instance = Queue_structure()
while True:
   print('enqueue <value>')
   print('dequeue')
   print('quit')
   my_input = input('What operation would you like to perform ? ').split()

   operation = my_input[0].strip().lower()
   if operation == 'enqueue':
      my_instance.enqueue_operation(int(my_input[1]))
   elif operation == 'dequeue':
      dequeued = my_instance.dequeue_operation()
      if dequeued is None:
         print('The queue is empty.')
      else:
         print('The deleted element is : ', int(dequeued))
   elif operation == 'quit':
      break

出力

enqueue <value>
dequeue
quit
What operation would you like to perform ? enqueue 45
enqueue <value>
dequeue
quit
What operation would you like to perform ? enqueue 12
enqueue <value>
dequeue
quit
What operation would you like to perform ? dequeue
The deleted element is : 45
enqueue <value>
dequeue
quit
What operation would you like to perform ? quit

説明

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

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

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

  • enqueue_operation’という名前のメソッドが定義されており、キューに値を追加するのに役立ちます。

  • 「dequeue_operation」という名前の別のメソッドが定義されています。これは、キューから値を削除し、削除された値を返すのに役立ちます。

  • 「Queue_structure」のインスタンスが作成されます。

  • 「エンキュー」、「デキュー」、「終了」などの3つのオプションがあります。

  • 「エンキュー」オプションは、スタックに特定の値を追加します。

  • 「デキュー」オプションは、要素をキューから削除します。

  • 「終了」オプションはループから抜け出します。

  • ユーザーによる入力/選択に基づいて、それぞれの操作が実行されます。

  • この出力はコンソールに表示されます。


  1. Nノードで二重リンクリストをローテーションするPythonプログラム

    二重にリンクされたリストを特定の数のノードでローテーションする必要がある場合は、「ノード」クラスを作成する必要があります。このクラスには、ノードに存在するデータ、リンクリストの次のノードへのアクセス、およびリンクリストの前のノードへのアクセスの3つの属性があります。 以下は同じのデモンストレーションです- 例 class Node:    def __init__(self, my_data):       self.previous = None       self.data = my_data  

  2. 循環リンクリスト内の要素を検索するPythonプログラム

    循環リンクリストで要素を検索する必要がある場合は、「ノード」クラスを作成する必要があります。このクラスには、ノードに存在するデータと、リンクリストの次のノードへのアクセスという2つの属性があります。 循環リンクリストでは、ヘッドとリアが互いに隣接しています。それらは円を形成するように接続されており、最後のノードに「NULL」値はありません。初期化関数を持つ別のクラスを作成する必要があり、ノードのヘッドは「なし」に初期化されます。 リンクリストにノードを追加したり、リンクリストで特定のノードを検索したり、ノード値を出力したりするために、ユーザーは複数のメソッドを定義します。 以下は同じのデ