資料結構與演算法之 棧 Stack 的Java實現

2021-08-28 13:44:21 字數 2380 閱讀 5296

在 lifo 資料結構中,將首先處理新增到佇列中的最新元素

與佇列不同,棧是乙個 lifo 資料結構。通常,插入操作在棧中被稱作入棧push。與佇列類似,總是在堆疊的末尾新增乙個新元素。但是,刪除操作,退棧pop,將始終刪除佇列中相對於它的最後乙個元素

1. 入棧:你可以單擊下面的push按鈕檢視如何將新元素 6 新增到棧中。

2. 退棧:你可以單擊下面的pop按鈕檢視當你從棧中彈出乙個元素時將移除哪個元素。

棧的實現比佇列容易。動態陣列足以實現堆疊結構。這裡我們提供了乙個簡單的實現供你參考:

// "static void main" must be defined in a public class.

class mystack

/** insert an element into the stack. */

public void push(int x)

/** checks whether the queue is empty or not. */

public boolean isempty()

/** get the top item from the queue. */

public int top()

/** delete an element from the queue. return true if the operation is successful. */

public boolean pop()

data.remove(data.size() - 1);

return true;

}};public class main

system.out.println(s.pop());}}

}

大多數流行的語言都提供了內建的棧庫,因此你不必重新發明輪子。除了初始化,我們還需要知道如何使用兩個最重要的操作:入棧退棧。除此之外,你應該能夠從棧中獲得頂部元素。下面是一些供你參考的**示例:

// "static void main" must be defined in a public class.

public class main

// 4. pop an element.

s.pop();

// 5. get the top element.

system.out.println("the top element is: " + s.peek());

// 6. get the size of the stack.

system.out.println("the size is: " + s.size());}}

從現在開始,我們可以使用內建的棧庫來更方便地解決問題。 讓我們從乙個有趣的問題(最小棧)開始,幫助你複習有用的操作。 然後我們將看一些經典的棧問題。 當你想首先處理最後乙個元素時,棧將是最合適的資料結構。

設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。

示例:

minstack minstack = new minstack();

minstack.push(-2);

minstack.push(0);

minstack.push(-3);

minstack.getmin(); --> 返回 -3.

minstack.pop();

minstack.top(); --> 返回 0.

minstack.getmin(); --> 返回 -2.

public class minstack 

public void push(int x)

public void pop()

public int top()

public int getmin()

}return min;

}public static void main(string args)

}

python資料結構之棧(stack)

目錄 棧的定義 棧的基本操作 小練習棧遵循後進先出 last in first out 現實生活中也有不少這樣的例子,比如在學校食堂吃完飯時,你把盤子放到桌子上,疊起來之後,阿姨過來拿盤子出去洗,假如是手洗,那肯定是先從最上面的盤子開始拿來洗的,而最上面的盤子是最後放上去的,卻是第乙個 被拿出來的,...

C 資料結構之Stack(棧)

stack,棧,是好比堆積木似的資料結構,從上之下堆積,取出時按 lifo last int first out後進先出的規則。棧一般為執行緒所獨有,也就是每個執行緒有其自有的棧,與heap堆一般為共有的不同 heap為程序所用,stack為執行緒所用?stack主要有四種操作 empty判斷棧是否...

資料結構 棧(Stack)

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