堆棧 又稱爲棧或堆疊,堆棧是一個抽象數據類型(ADT),在大多數編程語言中常用。
- 堆棧的特性是 只能從一個口子出入數據,因此也被稱作 LIFO表示後進先出 後進先出。
- 堆棧可通過數組,結構和鏈表來實現。堆棧可以是固定大小或它可動態調整。
# 堆棧基於Python語言的實現
'''
堆棧的基本方法:
push(value) 入棧 向堆棧內添加新的元素
pop() 出棧 將元素移出堆棧
peek() 得到堆棧頂部元素 但不刪除它
is_full() 檢查堆棧是否存滿 沒有長度限制的堆棧可不實現該方法
if_empty() 檢查堆棧是否爲空
len() 返回堆棧內元素個數
travel() 遍歷堆棧
'''
class Stack(object):
"""
堆棧類
"""
def __init__(self):
"""
初始化
"""
self.__stack = []
def __len__(self):
"""
返回堆棧長度
"""
return len(self.__stack)
def push(self, value):
"""
入棧
"""
self.__stack.insert(0, value)
def pop(self):
"""
出棧
"""
return self.__stack.pop(0)
def peek(self):
"""
返回堆棧頂部元素
"""
return self.__stack[0]
def is_empty(self):
"""
檢測堆棧是否爲空
"""
return self.__stack == []
def travel(self):
"""
遍歷堆棧
"""
for val in self.__stack:
print(val)
if __name__ == '__main__':
st = Stack()
print(st.is_empty())
st.push('a')
st.push('b')
st.push('c')
st.push('d')
print(st.pop())
print(st.is_empty())
print(st.peek())
print(len(st))
st.travel()