演算法系列15天速成 第十天 棧

2021-07-11 11:27:17 字數 1956 閱讀 3009

今天跟大家聊聊棧,在程式設計中,棧的使用還是非常廣泛的,比如有「括號匹配問題「,」html結構匹配問題「。

所以說掌握了」棧「的使用,對我們學習演算法還是很有幫助的。

一: 概念

棧,同樣是一種特殊的線性表,是一種last in first out(lifo)的形式,現實中有很多這樣的例子,

比如:食堂中的一疊盤子,我們只能從頂端乙個乙個的取。

二:儲存結構

」棧「不像」佇列「,需要兩個指標來維護,棧只需要乙個指標就夠了,這得益於棧是一種一端受限的線性表。

這裡同樣用」順序結構「來儲存這個」棧「,top指標指向棧頂,所有的操作只能在top處。

**段:

1

#region 棧的資料結構

2///

3///

棧的資料結構

4///

5public

class seqstack6

18 }

19#endregion

三:常用操作

棧的操作有:①初始化棧,②入棧,③出棧,④獲取棧頂。

1: 初始化棧

這個還是比較簡單的,初始化棧時,設定預設top指標為-1,這個就不用圖來展示了。

**段:

1

#region 棧的初始化操作

2///

3///

棧的初始化操作

4///

5///

6///

7public seqstackseqstackinit(int length)

8

15#endregion

2:入棧

這個操作主要就是做兩件事情:① 將元素從棧頂壓入,② top指標自增。

**段:

1

#region 入棧

2///

3///入棧4

///5

///6

///7

///8

public

void seqstackpush(seqstackseqstack, t data)

9

15#endregion

3:出棧

同樣跟「入棧」類似,需要做兩件事情,①乾掉top處的元素,②top指標自減。

**段

1

#region 出棧

2///

3///出棧4

///5

///6

///7

///8

public t seqstackpop(seqstackseqstack)

9

17#endregion

4:獲取棧頂元素

這個很簡單,跟「出棧」唯一不同的是不破壞棧頂元素,只是翻出來看看而已。

**段

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 的形式,現實中有很多這樣的例子,比如 食堂中的一疊盤子,我們只能從頂端乙個乙個的取。二 儲存結構 棧 不像 佇列 需要兩個指標來維護,棧只需要乙個指標就夠了,這得益於棧是一種一端受限的線性表。這裡同樣用 順序結...

實習第十天

今天電梯有點慢,等得我半小時才到公司。今天弄資料庫介面工具的時候,被松哥按在地上摩擦了。今天加班,在下班的時候,久久等不到電梯,想起了 上有個應該需要修改,然後回公司修改,改了半天,發現還是原來的好,於是恢復原樣,我就下班了,有點搞笑。這段時間上火非常嚴重,整個人的狀態都不好,做事情也沒精神。面對各...