スタック(スタック)は、スタックとも呼ばれ、操作が制限された線形テーブルです。リストを使用してPythonで実装できます。
スタックとは何ですか?
スタック(スタック)は、スタックとも呼ばれ、操作が制限された線形テーブルです。制限は、テーブルの一方の端でのみ挿入および削除操作が許可されることです。この端はスタックの一番上と呼ばれ、もう一方の端はスタックの一番下と呼ばれます。新しい要素をスタックに挿入することは、プッシュ、プッシュ、またはプッシュとも呼ばれます。新しい要素をスタックの最上位の要素の上に配置して、新しい最上位の要素にします。スタックから要素を削除することは、スタックの作成またはスタックを解除すると、スタックの最上位の要素が削除され、隣接する要素が新しい最上位の要素になります。
達成する方法は?
Pythonでリストを使用して、次のことを実現します。
#! /usr/bin/env python
# スタックをシミュレートするリストを定義する
stack =[]
# 押す,リストの付録を呼び出す()リストの最後に機能が追加されました,strip()先頭と末尾のスペースを削除するパラメータはありません
def pushit():
stack.append(raw_input('Enter new string: ').strip())
# スタックを解除する,中古ポップ()関数
def popit():iflen(stack)==0:
print 'Cannot pop from an empty stack!'else:
print 'Removed [', stack.pop(),']'
# カレンダースタック
def viewstack():
print stack
# CMDは辞書の使用です
CMDs ={'u': pushit,'o': popit,'v': viewstack}
# prはプロンプト文字です
def showmenu():
pr ="""
p(U)sh
p(O)p(V)iew(Q)uit
Enter choice:"""
while True:while True:try:
# 初使用ストリップ()スペースを削除する,最初の文字を小文字に変換する
choice =raw_input(pr).strip()[0].lower()except(EOFError, KeyboardInterrupt, IndexError):
choice ='q'
print '\nYou picked: [%s]'% choice
if choice not in'uovq':
print 'Invalid option, try again'else:break
# CMDs[]入力の選択に応じて、辞書からの対応する値に対応します,たとえば、uと入力します,pushitとして辞書から値を取得します,pushitを実行する()プッシュ操作
if choice =='q':break
CMDs[choice]()
# このファイルから入力されているかどうかを確認します,呼ばれる代わりに
if __name__ =='__main__':showmenu()
コンテンツ拡張の例:
# - *- coding:utf-8-*-
# __ author__ :kusy
# __ content__:ファイル説明
# __ date__:2018/9/3017:28classMyStack(object):
def __init__(self):
self.stack_list =[]
self.count =0
# スタックを作成する
def create_stack(self):return self.stack_list
# スタックに価値を追加する
def push(self, value):
self.stack_list.insert(0,value)
self.count +=1
# スタックの最上位要素の値を返します
def peek(self):if self.count:return self.stack_list[0]
# 一番上の要素を削除します
def pop(self):
self.stack_list.pop(0)
self.count -=1
# リターンスタックが空です
def is_empty(self):return self.count ==0
# スタックの内容を印刷する
def print_all(self):for sl in self.stack_list:print(sl)if __name__ =='__main__':
ms =MyStack()
ms.create_stack()
ms.push(1)
ms.push(2)
ms.push(3)print('スタック要素:')
ms.print_all()print('トップ要素:',ms.peek())
ms.pop()print('一番上の要素が削除された後:')
ms.print_all()print('スタックが空かどうか:','はい'if ms.is_empty()else'番号')print('---要素の削除を続ける')
ms.pop()print('---要素の削除を続ける')
ms.pop()print('スタックが空かどうか:','はい'if ms.is_empty()else'番号')
結果は以下のとおりです。
C:\Users\suneee\AppData\Local\Programs\Python\Python36\python.exe E:/wangjz/PyWorkSpace/LearnPython/PY0929/stack.py
スタック要素:321
トップ要素:3
一番上の要素が削除された後:21
スタックが空かどうか:番号
- - - 要素の削除を続ける
- - - 要素の削除を続ける
スタックが空かどうか:はい
Process finished with exit code 0
これまで、Pythonがスタックの構造を実装できるかどうかに関するこの記事を紹介しました。スタックのPython実装の構造に関連するその他の条件については、ZaLou.Cnを検索してください。
Recommended Posts