栈(stack)又名堆栈,它是一种运算受限的线性表。在Python中可使用列表进行实现。
什么是栈?
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
如何实现?
在Python中使用列表来实现:
#!/usr/bin/envpython #定义一个列表来模拟栈 stack=[] #进栈,调用列表的append()函数加到列表的末尾,strip()没有参数是去掉首尾的空格 defpushit(): stack.append(raw_input('Enternewstring:').strip()) #出栈,用到了pop()函数 defpopit(): iflen(stack)==0: print'Cannotpopfromanemptystack!' else: print'Removed[',stack.pop(),']' #编历栈 defviewstack(): printstack #CMDs是字典的使用 CMDs={'u':pushit,'o':popit,'v':viewstack} #pr为提示字符 defshowmenu(): pr=""" p(U)sh p(O)p (V)iew (Q)uit Enterchoice:""" whileTrue: whileTrue: try: #先用strip()去掉空格,再把第一个字符转换成小写的 choice=raw_input(pr).strip()[0].lower() except(EOFError,KeyboardInterrupt,IndexError): choice='q' print'\nYoupicked:[%s]'%choice ifchoicenotin'uovq': print'Invalidoption,tryagain' else: break #CMDs[]根据输入的choice从字典中对应相应的value,比如说输入u,从字典中得到value为pushit,执行pushit()进栈操作 ifchoice=='q': break CMDs[choice]() #判断是否是从本文件进入,而不是被调用 if__name__=='__main__': showmenu()