今天跟大家聊聊棧,在程式設計中,棧的使用還是非常廣泛的,比如有「括號匹配問題「,」html結構匹配問題「。
所以說掌握了」棧「的使用,對我們學習演算法還是很有幫助的。
一: 概念
棧,同樣是一種特殊的線性表,是一種last in first out(lifo)的形式,現實中有很多這樣的例子,
比如:食堂中的一疊盤子,我們只能從頂端乙個乙個的取。
二:儲存結構
」棧「不像」佇列「,需要兩個指標來維護,棧只需要乙個指標就夠了,這得益於棧是一種一端受限的線性表。
這裡同樣用」順序結構「來儲存這個」棧「,top指標指向棧頂,所有的操作只能在top處。
**段:
1三:常用操作#region 棧的資料結構
2///
3///
棧的資料結構
4///
5public
class seqstack6
18 }
19#endregion
棧的操作有:①初始化棧,②入棧,③出棧,④獲取棧頂。
1: 初始化棧
這個還是比較簡單的,初始化棧時,設定預設top指標為-1,這個就不用圖來展示了。
**段:
12:入棧#region 棧的初始化操作
2///
3///
棧的初始化操作
4///
5///
6///
7public seqstackseqstackinit(int length)
8
15#endregion
這個操作主要就是做兩件事情:① 將元素從棧頂壓入,② top指標自增。
**段:
13:出棧#region 入棧
2///
3///入棧4
///5
///6
///7
///8
public
void seqstackpush(seqstackseqstack, t data)
9
15#endregion
同樣跟「入棧」類似,需要做兩件事情,①乾掉top處的元素,②top指標自減。
**段
14:獲取棧頂元素#region 出棧
2///
3///出棧4
///5
///6
///7
///8
public t seqstackpop(seqstackseqstack)
9
17#endregion
這個很簡單,跟「出棧」唯一不同的是不破壞棧頂元素,只是翻出來看看而已。
**段
1總的執行**如下#region 獲取棧頂
2///
3///
獲取棧頂
4///
5///
6///
7///
8public t seqstackpeek(seqstackseqstack)
9
15#endregion
演算法系列15天速成 第十天 棧
今天跟大家聊聊棧,在程式設計中,棧的使用還是非常廣泛的,比如有 括號匹配問題 html結構匹配問題 所以說掌握了 棧 的使用,對我們學習演算法還是很有幫助的。一 概念 棧,同樣是一種特殊的線性表,是一種last in first out lifo 的形式,現實中有很多這樣的例子,比如 食堂中的一疊盤...
演算法系列15天速成 第十天 棧
一 概念 棧,同樣是一種特殊的線性表,是一種last in first out lifo 的形式,現實中有很多這樣的例子,比如 食堂中的一疊盤子,我們只能從頂端乙個乙個的取。二 儲存結構 棧 不像 佇列 需要兩個指標來維護,棧只需要乙個指標就夠了,這得益於棧是一種一端受限的線性表。這裡同樣用 順序結...
實習第十天
今天電梯有點慢,等得我半小時才到公司。今天弄資料庫介面工具的時候,被松哥按在地上摩擦了。今天加班,在下班的時候,久久等不到電梯,想起了 上有個應該需要修改,然後回公司修改,改了半天,發現還是原來的好,於是恢復原樣,我就下班了,有點搞笑。這段時間上火非常嚴重,整個人的狀態都不好,做事情也沒精神。面對各...