データ構造とアルゴリズム(6) - スタックスタック

  • 基本的な定義

:スタックとは何ですかスタックのデータ項目の順序のセットがありますが。スタックにおいて、追加、除去アイテムが、同じ端部で発生され、呼び出しスタックのこの端部(トップ)、スタックの他端は、何も動作は、底部(ベース)と呼ばれていません。

特徴: LIFO、最後のアウト

  • スタックの基本的な操作

私たちは、Pythonにはスタックがないことを知っている必要がありますが、我々は、スタックをシミュレートすることができます。

まず、我々が定義する必要があるスタックの基本的な操作のいくつか:

スタック() 空のスタックを作成し、それがどのデータ項目が含まれていません
プッシュ(アイテム) アイテムは、戻り値、スタックに追加しません
ポップ() スタックデータ項目の上部を除去し、返され、スタックが変更されています
ピーク() ビュースタックのデータ項目、スタックの先頭を削除せずに帰り項目、およびスタックを変更しません
isEmpty() スタックが空であるかどうかを返します
サイズ() データ数のリターンスタック

 

 

 

 

 

 

 

 

ここでは、操作の種類のリストとスタックを実装することができます。

1  クラススタック:
 2      「」「
3      スタックの独自の定義
 4    スタックは後端で、後端は、スタックの最上位に設定されてもよい
 5。     」「」
6。     DEF  __init__ (自己):
 7          self.items = []
 8。     DEF isEmpty(自己):
 9          リターン self.items == []
 10      DEFのプッシュ(セルフ、項目)
 。11          self.items.append(項目)
 12である     DEF POP(自己):
 13である         (self.items.pop)
 14      DEF PEEK (自己):
 15          戻り self.items [lenは(self.items)-1 ]
16      デフサイズ(自己):
 17          リターンでlen(self.items)
 18  なら __name__ == ' __main__ ' 19個の      S = スタック()
 20      s.push(' 1 ' 21      s.push(' ' 22 プリント(s.isEmpty())
 23 プリント(s.peek())
 24 プリント(s.size())               
1  [OUT]:
 2つの 3つの 4 2
 5 6プロセスは終了コード0で終了します 

 

  • アプリケーションのスタック
  1. 単純なマッチングブラケット

タスク:ブラケットはマッチングアルゴリズムを構築し、対応する左右の括弧に一致します。左から右にスキャンブラケットに、最新のオープン左括弧、右括弧が最初の出会いと一致する必要があります 

フローチャート:

 

 

 コード:

1  からスタックインポートスタック
 2  DEF parChecker(symbolString):
 3つの      S = スタック()
 4      バランス= 5      、インデックス= 0
 6      ながらインデックス<LEN(symbolString)バランス:
 7          シンボル= symbolString [インデックス]
 8          かのシンボル== " " 9              s.push(シンボル)
 10          11              であれば(s.isEmpty):
 12                  バランス=13              14                  s.pop()
 15          インデックス=指数+ 1
 16      場合バランス及びs.isEmpty():
 17          リターン18      19          リターン20  プリント(parChecker(' ((()))))' ))
 21  プリント(parChecker(' (((())))'))
[OUT]:
1つの
2つの 3つの 4プロセスは、終了コード0で終了します

しかし、実際には、ブラケットは、] [()} {として、しばしばより複雑です

参考:https://www.bilibili.com/video/BV1QJ411w7bB?p=17

 

おすすめ

転載: www.cnblogs.com/yeshengCqupt/p/12571924.html