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

例を使ってPythonでスタックを説明する


スタックは、後入れ先出しで機能する線形データ構造です。 メカニズム(LIFO)。スタックの最初に入る要素が最後に処理されます。

スタックのデータ構造は、料理のスタックの例を使用して理解できます。

お皿は次々と積み上げられます。最初のプレートまたは皿はパイルの下部にあり、最後に配置された皿はパイルまたはスタックの上部にあります。プレートが必要なときはいつでも、最後に挿入または配置されたプレートであるスタックの一番上にあるプレートをピックアップします。最初に配置されたプレートが最後にピックアップされます。したがって、後入れ先出しメカニズムに従います。

Pythonでのスタックの実装

Pythonのスタックは、他の線形データ構造またはPythonライブラリの組み込みモジュールを使用してさまざまな方法で実装できます。

方法1-リストを使用して実装

Pythonのスタックは、listを使用して実装できます。ただし、リストを使用してスタックを実装することはあまり効率的ではないため、お勧めしません。

関連する操作

append() −この関数は、スタックの最後に要素を追加します。

pop() −この関数は、スタックの最後または一番上の要素を削除して返します。この関数は、要素をLIFO順にポップします。

stack=[]
stack.append(1)
stack.append(2)
stack.append(3)
print("Intial Stack",stack)
print("Element popped from the stack")
print(stack.pop())
print(stack.pop())
print("Stack after popping some elements",stack)

出力

Intial Stack [1, 2, 3]
Element popped from the stack
3
2
Stack after popping some elements [1]

スタックが空になると、それ以上要素を削除することはできません。そうすると例外が発生します。

stack.pop()
IndexError: pop from empty list

方法2-queue.LifoQueueを使用して実装

これは、Pythonの組み込みモジュールを使用してスタックを実装する方法です。キューからLifoQueueをインポートする必要があります。 LifoQueueを初期化するか、特定のサイズでスタックすることができます。サイズがゼロの場合、スタックは無限になります。

関連する操作

最大サイズ −スタックで許可される要素の最大数

get() −スタックから最後または一番上の要素を削除して返します。スタックが空の場合は、スタックに少なくとも1つの要素が含まれるまで待ちます。

get_nowait() −スタックから最後の要素を削除して返します。スタックが空の場合は、例外を発生させます。

put(item) −スタックの最後に要素を追加します。スタックがいっぱいの場合は、空きスロットが利用可能になるまで待ちます。

put_nowait(item) −スタックの最後に要素を追加します。スタックがいっぱいの場合は、例外を発生させます。

full() −スタックがいっぱいの場合はtrueを返し、そうでない場合はfalseを返します。

empty() −スタックが空の場合はTrueを返し、そうでない場合はfalseを返します

qsize() −スタックに存在する要素の数を返します

from queue import LifoQueue
s=LifoQueue(maxsize=3)
s.put(1)
s.put(2)
s.put(3)
print("Is stack full",s.full())
print("Element popped from the stack")
print(s.get())
print(s.get())
print("Number of elements in stack",s.qsize())
print("Is stack empty",s.empty())

出力

Is stack full True
Element popped from the stack
3
2
Number of elements in stack 1
Is stack empty False

方法3:collections.dequeを使用して実装する

これは、Pythonでスタックを実装するもう1つの方法です。コレクションモジュールからdequeをインポートする必要があります。

関連する操作

append() −この関数は、スタックの最後に要素を追加します。

pop() −この関数は、スタックの最後の要素をO(1)時間計算量で削除して返します。

from collections import deque
stack=deque()
stack.append(1)
stack.append(2)
stack.append(3)
print("Intial stack: ",stack)
print("Element popped from the stack")
print(stack.pop())
print(stack.pop())
print("Stack after popping some elements: ",stack)

出力

Intial stack: deque([1, 2, 3])
Element popped from the stack
3
2
Stack after popping some elements: deque([1])

空の両端キューでpop()関数を使用すると、例外が発生します。


  1. JavaScriptのfinallyステートメントを例を挙げて説明します。

    finallyステートメントは、エラーの有無に関係なく、tryandcatchブロックの後に常に実行されます。 以下は、JavaScriptのfinallyステートメントのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /&

  2. 文字列ライブラリ関数をCの適切な例で説明する

    文字列ライブラリ関数 文字列を処理するように設計された事前定義された関数は、ライブラリ「string.h」で使用できます。彼らは- strlen() strcmp() strcpy() strncmp() strncpy() strrev() strcat() strstr() strncat() strlen()関数 文字列の文字数を返します。 構文 int strlen (string name) 例 #include <string.h> main (){    char a[30] = “Hello”;