python3面試題:如何用python實現棧(Stack)的操作?


前言

常見python面試題:如何用python實現棧(Stack)的操作?

什么是棧(Stack)

棧是一個很基本的數據結構,也是非常重要的數據結構,棧的特點:“先進后出,后進先出”,舉個生活中最常見的例子

彈夾大家並不陌生,先按進去的最后才打出來,最后按進去的最先打出來,這就是棧的數據結構。

下圖是詳細的棧結構

所有的操作只在一端進行(如:彈夾),有2個最基本的操作,入棧(子彈按進去) 和 出棧 (子彈彈出來)。
棧有兩端,最底端叫棧底,最上端叫棧頂。

python 實現棧(Stack)

弄清楚了棧的基本結構和操作后,就可以用python寫一個棧(Stack)
定義抽象數據類型棧的各種操作:

  • Stack():創建一個空棧,不包含任何數據項
  • push(item):將item加入棧頂,無返回值
  • pop():將棧頂數據項移除,並返回所移除的值,棧被修改
  • peek():“窺視”棧頂數據項,返回棧頂的數據項但不移除,棧不被修改
  • isEmpty():返回棧是否為空棧
  • size():返回棧中有多少個數據項
class Stack(object):
    def __init__(self):
        self.items = []

    def is_empty(self):
        """判斷是否為空集"""
        return self.items == []

    def push(self, item):
        """添加新元素到棧頂"""
        self.items.append(item)

    def pop(self):
        """刪除棧頂元素"""
        return self.items.pop()

    def peek(self):
        """窺探棧頂元素"""
        return self.items[-1]

    def size(self):
        """查看棧的大小"""
        return len(self.items)

if __name__ == '__main__':
    stack = Stack()
    print(stack.is_empty())
    stack.push(2)  # 入棧
    stack.push(3)  # 入棧
    print(stack.size())
    print(stack.peek())
    stack.pop()  # 出棧
    print(stack.size())

運行結果

True
2
3
1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM