資料結構 棧(Stack)

2022-05-17 00:48:07 字數 2465 閱讀 2634

棧(英語:stack)又稱為堆疊或堆疊,棧作為一種資料結構,它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。

由於堆疊資料結構只允許在一端進行操作,因而按照後進先出(lifo == last in first out)的原理運作。棧也稱為後進先出

undo操作(撤銷)

程式呼叫的系統棧

例如:a方法呼叫b方法得到返回值,b呼叫c得到返回值,a操作走到了b方法,這個時候可以將a的**位置儲存到棧中,然後走到b方法,b操作走到了c方法,這個時候可以將b的**位置儲存到棧中。最後c執行完成,根據棧的結構開始彈出資料,一步一步再走回a方法。

判斷括號是否有效。下文會有**實現(詳細規則描述可以參考leetcode第20題)

開括號必須用同一型別的括號閉合。

開方括號必須按正確順序閉合。

例如:正確的: 等 。錯誤的:[)] [}

import

com.wj.queue.arrayutil;

//陣列實現棧

public

class arraystackimplements stack

public

arraystack()

@override

public

intgetsize()

@override

public

boolean

isempty()

@override

public

void

push(e o)

@override

public

e pop()

@override

public

e peek()

@override

public

string tostring()

}return

stringbuilder.tostring();}}

測試**

public

class

stacktest

integer pop = arraystack.pop();

system.out.println("移除的內容是:" + pop);

system.out.println("移除後的arraystack: " + arraystack);

}}

//

測試結果

stack: [0] top

stack: [1,0] top

stack: [2,1,0] top

stack: [3,2,1,0] top

stack: [4,3,2,1,0] top

stack: [5,4,3,2,1,0] top

stack: [6,5,4,3,2,1,0] top

stack: [7,6,5,4,3,2,1,0] top

stack: [8,7,6,5,4,3,2,1,0] top

stack: [9,8,7,6,5,4,3,2,1,0] top

移除的內容是:9移除後的arraystack: stack: [8,7,6,5,4,3,2,1,0] top

相關棧的應用**

思路:

**實現:

public

class

solution "));

}public

boolean

isvalid(string s)

else

character peek =characters.pop();

switch

(c) ':

if (!peek.equals('

continue

;

case ']':

if (!peek.equals('['))

continue

;

case ')':

if (!peek.equals('('))

continue

; }}}

return

characters.isempty();}}

//

測試結果

true

//若輸入solution.isvalid("") 返回false

資料結構 棧(Stack)

只允許在一端進行插入或刪除操作的線性表。首先,棧是一種線性表,但限定這種線性表只能在某一段進行插入和刪除操作。棧頂 top 線性表允許進行插入和刪除的一端。棧底 bottom 固定的,不允許進行插入和刪除的另一端。空棧 不含任何元素。如上圖 a1為棧底元素,an為棧頂元素。由於棧只能在棧頂進行插入和...

資料結構 棧stack

棧的概念與資料結構 棧 有時稱為 後進先出棧 是乙個元素的有序集合,其中新增移除新元素總發生在同一端。這一端通常稱為 頂部 與頂部對應的端稱為 底部 棧的底部很重要,因為在棧中靠近底部的元素是儲存時間最長的。最近新增的元素是最先會被移除的。這種排序原則有時被稱為 lifo,後進先出。它基於在集合內的...

《資料結構》 棧Stack

一.棧stack 先進後出 filo 1.棧的主要功能是進行資料的儲存和計算 棧是一種容器 是具有特殊限制的鍊錶或陣列 2.棧的儲存方式 順序儲存 陣列 空間固定 所以需要預先知道所需要開闢的空間有多大 陣列難以進行擴容 所以導致可用空間是有限的 鏈式儲存 鍊錶 棧可以理解為鍊錶的頭插頭刪 這種儲存...