資結筆記|堆疊(Stack)

資結筆記|堆疊(Stack)

更新於 發佈於 閱讀時間約 1 分鐘

基本觀念


  堆疊(stack)是一種線性資料結構,而其中放入資料叫push由下往上堆放資料,讀取資料叫pop由上往下讀取,被讀取的資料就會從堆疊中移除,整個過程先進後出(first in last out)。就如同我們拿只有一個開口的桶子,先放進去的東西,因為被壓在下面,比較慢被取出來。詳見下圖

raw-image

  程式中遞迴式呼叫(recursive call),設計的原理就是用堆疊的資料結構,未來在講解遞迴的時候會再詳述。


資料堆入與讀取


  資料堆入比較單純,就是單純地放入堆疊之中,要注意的是新放入的資料只能放在最上面,不能從中間插入,而讀取時也只能從最上方讀取,讀取後該資料會從堆疊內刪除,才能讀取下一個資料。



python實作


使用串列list模擬堆疊stack

fruits = []

fruits.append('apple')

fruits.append('guava')

fruits.append('banana')

print('目前的堆疊',fruits)

print('pop:',fruits.pop())

print('pop:',fruits.pop())

print('pop:',fruits.pop())

以下是輸出結果

raw-image



avatar-img
資治通艦的沙龍
3會員
44內容數
人生中有的時候你會感知到,現在就是那個命運的分歧點,如果我不挽起袖子努力的話,我這一輩子大概就這樣了,所以我決定開始這個部落格,記錄我每天的努力,也希望可以分享學習的筆記與心得,大家可以一起交流學習。
留言
avatar-img
留言分享你的想法!
資治通艦的沙龍 的其他內容
請使用 C 或 Java 語言寫一副程式,此副程式對一個長度為 10 的整數陣列 A[0:9],最多花費 15 次的數值比較運算,尋找陣列中的最小值及最大值,並分別存入 Min 及 Max。(注意:請加註解說明程式碼寫法) 【103.關務】
第 1 題 題目 設有一三維陣列(three dimensional matrix) A[1...u₁, 1...u₂, 1...u₃],請問其中一元素(element)A[i,j,k] 之儲存位置為何?其中 1 ≤ i ≤ u₁,1 ≤ j ≤ u₂,1 ≤ k ≤ u₃,請列出推導過程。
陣列和鏈結串列的比較以及陣列位址的計算方式
請使用 C 或 Java 語言寫一副程式,此副程式對一個長度為 10 的整數陣列 A[0:9],最多花費 15 次的數值比較運算,尋找陣列中的最小值及最大值,並分別存入 Min 及 Max。(注意:請加註解說明程式碼寫法) 【103.關務】
第 1 題 題目 設有一三維陣列(three dimensional matrix) A[1...u₁, 1...u₂, 1...u₃],請問其中一元素(element)A[i,j,k] 之儲存位置為何?其中 1 ≤ i ≤ u₁,1 ≤ j ≤ u₂,1 ≤ k ≤ u₃,請列出推導過程。
陣列和鏈結串列的比較以及陣列位址的計算方式