リンクリストを使用してスタックを実装するPythonプログラム
リンクリストを使用してスタックデータ構造を実装する必要がある場合は、リンクリストに要素を追加(プッシュ)する方法と、リンクリストの要素を削除(ポップ)する方法を定義します。
>以下は同じのデモンストレーションです-
例
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack_structure:
def __init__(self):
self.head = None
def push_val(self, data):
if self.head is None:
self.head = Node(data)
else:
newNode = Node(data)
newNode.next = self.head
self.head = newNode
def pop_val(self):
if self.head is None:
return None
else:
del_Val = self.head.data
self.head = self.head.next
return del_Val
my_instance = Stack_structure()
while True:
print('push <value>')
print('pop')
print('quit')
my_input = input('What action 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':
del_Val = my_instance.pop_val()
if del_Val is None:
print('The stack is empty.')
else:
print('The deleted value is : ', int(del_Val))
elif operation == 'quit':
break 出力
push <value> pop quit What action would you like to perform ? push 56 push <value> pop quit What action would you like to perform ? push 78 push <value> pop quit What action would you like to perform ? push 90 push <value> pop quit What action would you like to perform ? pop The deleted value is : 90 push <value> pop quit What action would you like to perform ? quit
説明
-
「Node」クラスが作成されます。
-
必要な属性を持つ別の「Stack_structure」クラスが作成されます。
-
最初の要素、つまり「head」を「None」に初期化するために使用される「init」関数があります。
-
スタックに値を追加するのに役立つ「push_val」という名前のメソッドが定義されています。
-
「pop_val」という名前の別のメソッドが定義されています。これは、スタックの最上位から値を削除し、削除された値を返すのに役立ちます。
-
「Stack_structure」のインスタンスが作成されます。
-
「プッシュ」、「ポップ」、「終了」などの3つのオプションがあります。
-
「プッシュ」オプションは、スタックに特定の値を追加します。
-
「pop」オプションは、スタックから最上位の要素を削除します。
-
「終了」オプションはループから抜け出します。
-
ユーザーによる入力/選択に基づいて、それぞれの操作が実行されます。
-
この出力はコンソールに表示されます。
-
Nノードで二重リンクリストをローテーションするPythonプログラム
二重にリンクされたリストを特定の数のノードでローテーションする必要がある場合は、「ノード」クラスを作成する必要があります。このクラスには、ノードに存在するデータ、リンクリストの次のノードへのアクセス、およびリンクリストの前のノードへのアクセスの3つの属性があります。 以下は同じのデモンストレーションです- 例 class Node: def __init__(self, my_data): self.previous = None self.data = my_data
-
循環リンクリスト内の要素を検索するPythonプログラム
循環リンクリストで要素を検索する必要がある場合は、「ノード」クラスを作成する必要があります。このクラスには、ノードに存在するデータと、リンクリストの次のノードへのアクセスという2つの属性があります。 循環リンクリストでは、ヘッドとリアが互いに隣接しています。それらは円を形成するように接続されており、最後のノードに「NULL」値はありません。初期化関数を持つ別のクラスを作成する必要があり、ノードのヘッドは「なし」に初期化されます。 リンクリストにノードを追加したり、リンクリストで特定のノードを検索したり、ノード値を出力したりするために、ユーザーは複数のメソッドを定義します。 以下は同じのデ