在 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為棧頂元素。由於棧只能在棧頂進行插入和...