資料結構基礎之棧

2022-05-13 12:07:41 字數 1022 閱讀 9388

資料結構之棧結構:

1.  棧的特點:

相比於乙個普通的陣列,棧控制了操作的方法,元素只能在棧頂入棧,也只能在棧頂出棧。

2.  棧的用途:

在深入優先搜尋(dfs)中會用到,比如現在有乙個圖如下:

現在要從a出發要遍歷整張圖,那麼首先看與a相連的b、d,任選乙個,比如b,那麼要先儲存a,將其壓入棧,然後遍歷b,b又到c,然後c沒有其餘的路徑就可以返回了,取出棧頂的元素b,b也沒有其餘路徑,再取出棧頂元素a,現在a可以走d,那麼d壓入棧,走e,返回到d,再返回到a,現在a是出發點,又沒有其餘路徑,那麼說明整張圖都遍歷完全。

訪問順序為:a->b->c->b->a->d->e->d->a  (大致如此)

在這個搜尋中,棧的作用便可以很清晰的看到。

在程式設計中,深入優先搜尋是很重要的一種演算法,也很常見,經典的迷宮找出路問題就要用到它。

3.  棧的寫法:

如果自己手寫棧的模板的話,可以封裝成乙個結構體或者類,首先要有元素本體、入棧操作、出棧操作、取棧頂元素,這三個是最基本的。比如我要建乙個int型別的棧的話,那麼可以封裝如下:

1 typedef struct

212 st[top++]=data;

13return

true;14

}15bool pop() //

出棧,即將現在棧頂的那個元素捨去

1622 top--;23}

24int front() //

取棧頭元素

2528 }stack;

如果在一些程式設計比賽,比如acm中,一般不會進行棧的封裝,要麼直接呼叫stl,要麼簡略寫下就可以了,如下:

int st[1000],top=0;

入棧:st[top++]=data;

出棧:data=st[--top];

4.  對於棧的說明

與佇列一樣,都是資料結構最最基礎的一塊,要熟練掌握,同時了解一下他的特殊用法,比如單調棧等。

資料結構基礎之棧

棧 一種操作受限的線性表,只允許在一端插入和刪除資料。漢諾塔你有沒有玩過,每根柱子上的碟子每次只能操作最上層的乙個,或者,你可以想象平時生活中的盤子的堆疊方式,每次我們使用時都是從最上層拿乙個,放的時候也是放在最上次,這種型別的結構就是典型的棧結果,滿足,後進先出 先進後出的特點,這也是棧的資料結構...

基礎資料結構之單調棧

題目描述 給定乙個長度為n的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出 1。輸入格式 第一行包含整數n,表示數列長度。第二行包含n個整數,表示整數數列。輸出格式 共一行,包含n個整數,其中第i個數表示第i個數的左邊第乙個比它小的數,如果不存在則輸出 1。資料範圍 1 n 105 1 ...

資料結構之棧(基礎實現)

1 子程式的呼叫 在跳往子程式前,會先將下個指令的位址存到堆疊中,直到子程式執行完後再將位址取出,以回到原來的程式中。2 處理遞迴呼叫 和子程式的呼叫類似,只是除了儲存下乙個指令的位址外,也將引數 區域變數等資料存入堆 棧中。3 表示式的轉換 中綴表示式轉字尾表示式 與求值 實際解決 4 二叉樹的遍...