堆疊在程式設計當中是一個十分常見的資料結構,它就相當于一個瓶子,可以往里面裝入各種元素,最先裝進這個瓶子里的元素,要把后裝進這個瓶子里的全部元素拿出來完之后才能夠把他給拿出來,假設這個瓶子在桌上平放,左邊是瓶底,右邊是瓶口,那么我們可以作出下圖:
可以看到瓶子里一共被我放進了5個元素,分別是1,2,3,4,5,那么最先放進去的元素則是1,緊接著我放入了2,3,4,5.這很容易理解對吧,如果我們想要把其中的一個元素,比如2取出來,那么我們需要把3,4,5都取出來才能夠拿到2,因此堆疊這個資料結構遵循的是“先進后出”的原則,我們可以用python當中的list來表示一個堆疊,list串列是一個天然的堆疊結構,可以很容易地表示出堆疊和入堆疊,首先我們定義一個堆疊的類,再到堆疊里定義各種堆疊的實作方法即可,比如出堆疊,入堆疊,判斷堆疊是否為空,判斷堆疊的大小等方法,程式如下:
class Stack(): def __init__(self): # 初始化一個空的串列 self.__list=[] # 壓堆疊,也就是把元素從上方添加上去,但是這里我咋感覺是從下方添加進去的,順序反了? def push(self,item): self.__list.append(item) def pop(self): return self.__list.pop()# 彈出堆疊頂的元素,同時洗掉堆疊頂的元素 # 回傳堆疊頂的元素 def peek(self): return self.__list[len(self.__list)-1]# 也就是獲取串列當中的最后一個元素 # 判斷堆疊是否為空 def is_empty(self): return self.__list == [] # 計算堆疊的大小 def size(self): return len(self.__list) stack = Stack() print("Is this empty? :",stack.is_empty()) stack.push(1) stack.push(2) stack.push(3) stack.push(4) print("Is this empty? :",stack.is_empty()) print(stack.pop()) print(stack.pop()) print(stack.pop()) print(stack.pop())
可以看到最后我們創建了一個stack物件來呼叫里面的方法,并往堆疊里送入了4個元素,最后使用pop方法依次彈出堆疊頂的元素,輸出如下:
Is this empty? : True Is this empty? : False 4 3 2 1
這就是我們的資料結構:堆疊,簡單吧!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/53384.html
標籤:其他
