讓把人壓到窒息的瓶子棧變得簡單易懂

2022-09-10 05:45:16 字數 1546 閱讀 5882

前幾次講了關於近期比賽的題目,我才疏學淺,只能講前2題。大家::>>諒解啊哈

今天我們來講一講關於c++中資料結構中線性表——棧。

首先,我們來總結一下棧的最大特點。

棧先進後出&後進先出

這兩個的概念似乎很難理解哈?我不知道對於讀者來說容易理解嗎?不過,我今天就來剖解「先進後出」和「後進先出」這八個字。

要想理解很簡單,畫圖就是最好的辦法。

首先,我們有乙個字元a。我們把它「壓」進棧裡。

靈魂畫師登場!!!

這,便是乙個非常簡單的棧模型。

a被壓在了棧底。

標註a是第乙個壓進棧裡的

其次,我們壓進去字元b。

如圖:

壓進去了之後觀察現象。先出來的是誰呢?a出的來嗎?好像只有b出的來。這,證明了後進先出的特點。

彈出b:

最後,彈出a,證明先進後出。

很簡單吧?

接下來,我們講一講資料結構最重要的進與出的運算。

首先,棧可以定義為乙個陣列s。

在設乙個指標top指向棧頂。

進棧便是將某一數「壓」進棧內。

出棧便是抬出來(手指伸得進去嗎?)

於是,我們就得到了進棧出棧的演算法。

進棧演算法(push)

1、判斷溢位(即top>=陣列長度) 如溢位,做出錯處理。

2、top++;

3、s[top]=x(x是進棧數字)

出棧(退棧)演算法(pop)

1、判斷下溢(top<=0)

2、(可有可無)將出棧資訊傳遞給x:x=s[top]

2、top–;

實現程式:

進棧&出棧

int n=

101;

//即陣列長度

int s[n]

;bool

push

(int

*top,

int*x)

//給兩個位址,可間接賦值 學過指標嗎?.......

(*top)++;

s[*top]

=*x;

return1;

}bool

pop(

int*x,

int top)

//此處*x為調回值

*y=s[

*top]

;//儲存處理

(*top)--;

}

上面演算法出現的判斷非常重要,判斷下溢可以作為程式的轉移點,而上溢會導致程式卡停,無法執行,記憶體區域混亂,有嚴重的後果,要設法避免。

下次發文章將會講到關於棧的實際應用,將會有很好玩的應用哦!!記得關注!

讓人窒息的一天

昨晚快十點了才下班回家 其實應該叫住所,叫狗窩我更樂意 本來還有點東西要改的,可是不知不覺地的睡著了。沒洗澡,沒刷牙就睡著了,是有點困了,白天在條條家吃午飯的時候就覺得困了,更不用談在車上晃悠了乙個小時全是昏迷著睡著的了。還有去加班了將近6個小時。今天中午11點多才回來,是在夢中醒來的,我好像好久都...

讓人困惑的IFRAME

今天在做網頁時,用到了iframe,竟碰到了很怪的問題。若 為document.all.iframe1.document.getelementsbytagname div 返回的是包含 iframe本身頁面裡所有的div元素,若 為document.frames iframe1 document.g...

讓人壓抑的生活

這日子過得真的好累!沒結婚的時候就想公婆年紀大點也沒關係,不能帶小孩我可以自己帶!窮也不是問題,只要勤奮什麼都是可以有的。是那時候的自己太天真,還是現在的自己太現實!現在看著別人剛結婚的公婆至少還能幫稱著兩年!可是我呢?什麼都沒有,小孩兒要自己帶!我好擔心以後不能給我女兒好點的生活!每天都過得好壓抑...