先说明下:栈,是限制在表一端进行插入和删除操作的线性表。允许进行插入、删除操作的这一端称为栈顶(Top),另一个固定端称为栈底。例如栈中有三个元素,近栈的顺序是a1、a2、a3,当需要出栈时顺序为a3,a2,a1,所以栈又称“后进先出”或“先进后出”的线性表,简称“LIFO表”或“FILO表”。
现在使用Python实现栈的进出,直接上代码吧:
#模拟栈的操作:先进后出
#建立空的栈,用列表模拟你顺序栈
stack = []
#1.进栈:将输入的字符追加到stack栈中,模拟入栈
def push_stack():
num = input("input to push :")
stack.append(num)
print("%s has been push " %num)
#2.出栈:删除最后一个字符,模拟出栈
def pop_stack():
print("%s has out" %stack.pop())
#3.显示目前栈的内容
def show_stack():
print(stack)
#此处将可选的命令放在字典中作为key,然后找到key所对应的的函数名
def show_menu():
#注意,函数名不能加'()',否则系统就会当成函数的调用从而直接执行这个函数
commands = {'0':push_stack,
'1':pop_stack,
'2':show_stack,
}
prompt = """
(0):push stack
(1):pop stack
(2):show stack
(3):exit
input what U want(0/1/2/3):"""
while True:
#input(prompt)表示将上面的prompt显示出来
#然后得到字符串,用strip()去除两端空白,再取下标为0的字符
choice = input(prompt).strip()[0]
if choice == 3:
break
if choice not in '0123':
print("Invalid input,Try again")
#将'()'加在此处,表示调用所选数字对应的函数
commands[choice]()
show_menu()
执行如下:
1)入栈:
2)检查入栈的数据是否成功入栈:
3)出栈:
栈顶的优先出栈,两次出栈后,剩下‘0’,‘1’。
思想很容易理解,进栈出栈,先进后出,但是代码的话还是得多琢磨下,结合字典,每个操作都调用独立的函数,进行简单的判断后再执行对应函数。