亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python可以實(shí)現(xiàn)棧的結(jié)構(gòu)嗎

 更新時間:2020年05月27日 16:36:50   作者:Python  
在本篇文章里小編給各位整理的是關(guān)于Python實(shí)現(xiàn)棧的結(jié)構(gòu)的條件的相關(guān)知識點(diǎn),有需要的朋友們可以學(xué)習(xí)下。

棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。在Python中可使用列表進(jìn)行實(shí)現(xiàn)。

什么是棧?

棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進(jìn)棧、入?;驂簵?,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

如何實(shí)現(xiàn)?

在Python中使用列表來實(shí)現(xiàn):

#!/usr/bin/env python 
#定義一個列表來模擬棧 
stack = [] 
#進(jìn)棧,調(diào)用列表的append()函數(shù)加到列表的末尾,strip()沒有參數(shù)是去掉首尾的空格 
def pushit(): 
 stack.append(raw_input('Enter new string: ').strip()) 
#出棧,用到了pop()函數(shù) 
def popit(): 
 if len(stack) == 0: 
  print 'Cannot pop from an empty stack!'
 else: 
  print 'Removed [', stack.pop(), ']'
#編歷棧 
def viewstack(): 
 print stack 
#CMDs是字典的使用 
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: 
    #先用strip()去掉空格,再把第一個字符轉(zhuǎn)換成小寫的 
    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[]根據(jù)輸入的choice從字典中對應(yīng)相應(yīng)的value,比如說輸入u,從字典中得到value為pushit,執(zhí)行pushit()進(jìn)棧操作 
  if choice == 'q': 
   break
  CMDs[choice]() 
#判斷是否是從本文件進(jìn)入,而不是被調(diào)用 
if __name__ == '__main__': 
 showmenu()

實(shí)例內(nèi)容擴(kuò)展:

# -*- coding:utf-8 -*-
# __author__ :kusy
# __content__:文件說明
# __date__:2018/9/30 17:28


class MyStack(object):
  def __init__(self):
    self.stack_list = []
    self.count = 0

  # 創(chuàng)建一個棧
  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

  #打印棧內(nèi)容
  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('---繼續(xù)刪除元素')
  ms.pop()
  print('---繼續(xù)刪除元素')
  ms.pop()
  print('棧是否為空:','是' if ms.is_empty() else '否')

運(yùn)行結(jié)果如下

C:\Users\suneee\AppData\Local\Programs\Python\Python36\python.exe E:/wangjz/PyWorkSpace/LearnPython/PY0929/stack.py
棧元素:
3
2
1
棧頂元素: 3
棧頂元素刪除后:
2
1
棧是否為空: 否
---繼續(xù)刪除元素
---繼續(xù)刪除元素
棧是否為空: 是

Process finished with exit code 0

到此這篇關(guān)于Python可以實(shí)現(xiàn)棧的結(jié)構(gòu)嗎的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)棧的結(jié)構(gòu)的條件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論