棧中元素個數問題,如何計算棧中元素個數?

時間 2022-04-08 18:35:01

1樓:一樣笨的你

我想問下為什麼要加1

2樓:之不女子

棧頂在高位,也就是m+1處,進棧時top向低下標擴充套件,因此當top為m時,有1個元素;為m -1 時,有2個元素;為20時,有m- 20 +1 = m-19個元素在棧中。

棧是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。

向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

如何計算棧中元素個數?

3樓:瓦吉姆中國行

因為堆疊的頂部在高位,即m+1,當進入堆疊時,頂部延伸到低位標記,所以當頂部為m時,有一個元素;當m -1時,有2個元素;當它是20時,堆疊中有m- 20 +1 = m-19個元素

堆疊,也稱為stack,是一個具有有限操作的線性表。

限制是只允許在表的一端進行插入和刪除操作。  這一端叫做棧頂,而另一端叫做棧底。

將新元素插入堆疊也稱為堆疊推送、堆疊推送或堆疊推送。它將新元素放在堆疊的頂部元素之上,並使其成為堆疊的新頂部元素。

從堆疊中移除元素也稱為建立堆疊或移除堆疊。它移除堆疊的頂部元素,以便其相鄰元素成為新的頂部元素。

棧(stack)又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。

向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

4樓:星月談教育

因為堆疊的頂部在高位置,即m+1,所以在推入堆疊時頂部會擴充套件到低下標。 因此,當top為m時,只有一個元素; 當m -1時,有2個元素; 當它為20時,堆疊上有m-20 1 = m-19個元素。

堆疊(又名堆疊),這是一個操作受限的線性表。 限制是在表的一端僅允許插入和刪除操作。 該端稱為堆疊的頂部,另一端稱為堆疊的底部。

將新元素插入堆疊也稱為堆疊,堆疊或推入。 它將新元素放在棧頂的頂部,使其成為新的棧頂元素。 從堆疊中刪除元素也稱為「彈出」或「要取消堆疊」,它會刪除堆疊的頂部元素,並使其相鄰元素成為新的頂部元素。

進棧(push)演算法:

① 若top≥n時,則給出溢位資訊,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢位;不滿則作②);

② 置top=top+1(棧指標加1,指向進棧地址);

③ s(top)=x,結束(x為新進棧的元素);

5樓:娛樂快樂閱

你在集合中讀入一個元素,就入棧,那麼讀完所有的集合元素之後,棧內的元素數目就和原來集合中的相等。

那麼同時伴隨出棧的動作。當棧中元素都出去之後,每次出棧+1,那麼你就可以元素任何時候進棧任何時候也可以出棧,在出棧的時候設一個int s ,讓其s++到集合的末端,並且讓所有棧內的元素出棧,s就是所求。

棧底指標為0.然後++top,壓棧,這個則是--top;

bottom-top+1為棧中元素個數,

49-30+1=20,是對的,

如果bottom=49,top=49,

很明顯棧中49-49+1=1個元素。

棧是限定僅在表尾進行插入和刪除操作的線性表。「棧」者,儲存貨物或供旅客住宿的地方,可引申為倉庫、中轉站,引入到計算機領域裡,就是指資料暫時儲存的地方,所以才有進棧、出棧的說法。

6樓:可可**沒有腦袋

你在集合中讀入一個元素,就入棧,那麼讀完所有的集合元素之後,棧內的元素數目就和原來集合中的相等。

7樓:匿名使用者

這個問題是這樣的,你在集合中讀入一個元素,就入棧,那麼讀完所有的集合元素之後,棧內的元素數目就和原來集合中的相等。那麼同時伴隨出棧的動作。當棧中元素都出去之後,每次出棧+1,那麼你就可以元素任何時候進棧任何時候也可以出棧,在出棧的時候設一個int s ,讓其s++到集合的末端,並且讓所有棧內的元素出棧,s就是所求。

8樓:樂趣情感

在出棧的時候設一個int s ,讓其s++到集合的末端,並且讓所有棧內的元素出棧,s就是所求。

棧是一種資料結構,有2種操作:加入一個元素,刪除最遲加入(且沒被刪除,還在棧裡)的元素。

9樓:娛眼大觀園

這個要分情況的,如果棧是滿格的話那麼元素數就是n+1個,如果棧是不滿的話,那麼也要分三種情況,比較麻煩,不過一般來說都是2n+1。

10樓:半盒夏

這個叫反射(reflection),更進一步說,屬於 靜態反射。原生不支援,以後(幾年後)可能會支援。自己寫的話要麼用 預處理,要麼寫一個 前處理器,要麼用非標準的 c++ 直譯器。

都不是很漂亮。

所以答案是不做額外的工作的話,不能實現

11樓:洞若觀火人世間

(1)建立兩個棧,一個用來儲存運算元,另一個用來儲存運算子, 開始時在運算子棧中先壓入『/0』,一個表示式的結束符。

(2)然後從左至右依次讀取表示式中的各個符號(運算元或者運算子);

(3)如果讀到的是運算元直接存入運算元棧;

(4)如果讀到的是運算子,則作進一步判斷:

若讀到的是『/0』結束符,而且此時運算子棧的棧頂元素也是『/0』結束符,則運算結束,輸出運算元棧中的元素即為最後結果。

若讀到的是『(』或者讀到的運算子的優先順序比目前的運算子棧中的棧頂元素的優先順序高,則將運算子直接存入運算子棧,繼續讀表示式中的下一個符號,重複步驟(3)和(4);

若讀到的是『)』,而且此時運算子棧的棧頂元素是『(』結束符,則將運算子棧中的棧頂元素退出來,繼續讀表示式中的下一個符號,重複步驟(3)和(4);

若讀到的運算子的優先順序等於或小於之前的運算子的優先順序,則從運算元中退出2個,從運算子中退出一個進行運算,將運算結果存入運算元棧;再把之前讀到的運算子與目前的運算子棧頂比較,重複步驟(4)(即現在不讀下一個元素);

求棧中元素個數(stacklength)的兩個演算法那個正確?

12樓:

這只是一個偽**,就演算法思想考慮都是正確的。

第一個逐一判斷是否到底,否則累加1。

第二個直接用棧頂位置減去棧底位置。

前者要求記憶體空間連續,後者要求存放位置連續(比如陣列下標)

13樓:倒黴熊

感覺都正確,這兩個沒有什麼區別啊。

棧的順序儲存空間中,元素個數怎麼算?

14樓:陸宵

因為棧頂在高位,也就是m+1處,進棧時top向低下標擴充套件,因此當top為m時,有1個元素;為m -1 時,有2個元素;為20時,有m- 20 +1 = m-19個元素在棧中。

棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。

向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

計算機怎樣利用棧計算集合中元素個數?

15樓:匿名使用者

這個問題是這樣的,你在集合中讀入一個元素,就入棧,那麼讀完所有的集合元素之後,棧內的元素數目就和原來集合中的相等。那麼同時伴隨出棧的動作。當棧中元素都出去之後,每次出棧+1,那麼你就可以元素任何時候進棧任何時候也可以出棧,在出棧的時候設一個int s ,讓其s++到集合的末端,並且讓所有棧內的元素出棧,s就是所求

python中如何計算列表中元素的個數

s 1,2,3 len s 計算列表中元素總個數 len list 計算列表中元素 a 的個數 list.count a 王者小祁君 比如你可以這樣 用isinstance 函式來判斷型別 intcount 0 用來記錄列表中的int元素個數listcount 0 記錄list元素個數a 1,a 2...

wow中元素薩滿迴圈輸出插寶石附魔問題

起手火震,開元素之誓,熔岩爆裂,3 4發閃電箭,熔岩爆裂,3 4發閃電箭,火震,熔爆,3 4發閃電箭,如此重複,遇到跑位就一直火震,有空空擋就用熔爆,藍下2w就頻繁用雷霆震怒回藍,cd一好就用。寶石麼,急速達到1000後,可以提升法傷和暴擊,沒達到儘可能提升急速和法傷,強堆急速並不贊同,最好直接用魯...

c語言中如何依次輸入陣列中元素,C語言中如何依次輸入陣列中元素

include int main int a 17 int i for i 0 i 17 i scanf d a i return 0 函式功能 把格式化的資料寫入某個字串 函式原型 int sprintf char buffer,const char format argument 返回值 字串長...