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

2つのキューを使用してスタックを実装するPythonプログラム


2つのキューを使用してスタックを実装する必要がある場合は、Queue_structureクラスとともに「Stack_structure」クラスが必要です。これらのクラスでは、スタックとキューにそれぞれ値を追加および削除するためのそれぞれのメソッドが定義されています。

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

class Stack_structure:
   def __init__(self):
      self.queue_1 = Queue_structure()
      self.queue_2 = Queue_structure()

   def check_empty(self):
      return self.queue_2.check_empty()

   def push_val(self, data):
      self.queue_1.enqueue_operation(data)
      while not self.queue_2.check_empty():
         x = self.queue_2.dequeue_operation()
         self.queue_1.enqueue_operation(x)
      self.queue_1, self.queue_2 = self.queue_2, self.queue_1

   def pop_val(self):
      return self.queue_2.dequeue_operation()

class Queue_structure:
   def __init__(self):
      self.items = []
      self.size = 0

   def check_empty(self):
      return self.items == []

   def enqueue_operation(self, data):
      self.size += 1
      self.items.append(data)

   def dequeue_operation(self):
      self.size -= 1
      return self.items.pop(0)

   def size_calculate(self):
      return self.size

my_instance = Stack_structure()

print('Menu')
print('push <value>')
print('pop')
print('quit')

while True:
   my_input = input('What operation would you like to perform ? ').split()

   operation = my_input[0].strip().lower()
   if operation == 'push':
      my_instance.push_val(int(my_input[1]))
   elif operation == 'pop':
      if my_instance.check_empty():
         print('Stack is empty.')
      else:
         print('The deleted value is: ', my_instance.pop_val())
   elif operation == 'quit':
      break

出力

Menu
push <value>
pop
quit
What operation would you like to perform ? push 56
What operation would you like to perform ? push 34
What operation would you like to perform ? push 78
What operation would you like to perform ? push 90
What operation would you like to perform ? pop
The deleted value is: 90
What operation would you like to perform ? quit

説明

  • 空のリストを初期化する「Stack_structure」クラスが作成されます。

  • スタックが空かどうかを確認するために、「check_empty」メソッドが定義されています。

  • スタックに要素を追加する「push_val」という名前の別のメソッドが定義されています。

  • スタックから要素を削除する「pop_val」という名前の別のメソッドが定義されています。

  • 空のリストを初期化し、リストのサイズを0として割り当てる「Queue_structure」クラスが作成されます。

  • キューが空かどうかを確認するために、「check_empty」メソッドが定義されています。

  • キューに要素を追加する「enqueue_operation」という名前の別のメソッドが定義されています。

  • キューから要素を削除する「dequeue_operation」という名前の別のメソッドが定義されています。

  • キューのサイズを決定する「size_calculate」という名前の別のメソッドが定義されています。

  • この「Queue_structure」の2つのインスタンスが定義されています。

  • メニュー、プッシュ、ポップ、終了の4つのオプションがあります。

  • ユーザーが指定した入力に基づいて、スタックの要素に対して操作が実行されます。

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


  1. Unittestを使用したPythonプログラムでのユニットテスト

    この記事では、Python3.xで利用可能なunittestモジュールを使用して、ソフトウェアテストの基本について学習します。またはそれ以前。自動化、テストのセットアップと終了コードの共有、およびすべてのフレームワークの独立したテストが可能になります。 単体テストでは、さまざまなオブジェクト指向の概念を使用します。ここでは、主に使用されるいくつかの概念について説明します。 テストケース −これは、特定の入力セットに従った応答固有の基本クラスです。この操作を実装するには、ユニットテストの基本クラス、つまり「TestCase」を使用します。 テストスイート −テストケースをまとめて実

  2. Pythonでのスタックおよびキューとしてのリストの使用

    この記事では、Python3.xのスタックとキューの構造について学習します。またはそれ以前。ここでは、これらのデータ構造内での動作と変更について説明します- これには-が含まれます 挿入操作(プッシュ、エンキュー) 削除操作(ポップ、デキュー) 表示/トラバース操作 前提条件 :リストとリスト操作 関連データ構造 :リスト操作 関連画像 スタック スタックでは、オブジェクトは互いに重ねて格納され、これらのオブジェクトは到着の逆の順序で削除されます。つまり、LIFOの概念に従います。 LIFOは、スタックデータ構造で後入れ先出しタイプの配置に従うことを意味します。 スタックで