當前位置:首頁 » 服務存儲 » 存儲空間top值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲空間top值

發布時間: 2022-08-19 04:31:29

1. 在數據結構中,對於棧,空棧時top=-1,是什麼意思呢top是指針,top指向棧頂,為什麼指針還可以賦值呢

第一問:
指針就是下標,下標就是位序。位序變數top=-1,就是位序為-1:-1的位序當然是非法的,因為C語言中數組下標是從0開始的,-1的位序取不到值,訪問a[-1]異常。
第二問:
top可以賦值,指針變數top佔有特殊的內存空間,這個空間存放的不是普通數,而是空間的地址,說成是空間的位序也不是不可以的。

2. 為什麼棧的初始狀態top等於m+1,則說明棧空時top=m+1

這是因為棧的初始狀態是確定的。而棧的初始狀態,也就是棧空的狀態。所以,如果當棧的初始狀態top等於m+1。那棧空時的top就等於m+1了。

棧的順序存儲空間為S(1:50),初始狀態為top=0。現經過一系列入棧與退棧運算後,top=20,則棧頂-棧底=20-0=20個元素。

棧是向上增長的,每次壓入一個元素,棧的TOP指針向上移動一位。當壓入第一個元素時,TOP指針指向m+1-1 = m當壓入第二個元素時,TOP指針指向m+1-2 = m-1。以此類推,當壓入第N個元素時,TOP指針指向m+1-N = 20則N = m+1-20 = m-19。

(2)存儲空間top值擴展閱讀:

棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為先進後出表。

在計算機系統中,棧則是一個具有以上屬性的動態內存區域。程序可以將數據壓入棧中,也可以將數據從棧頂彈出。在i386機器中,棧頂由稱為esp的寄存器進行定位。壓棧的操作使得棧頂的地址減小,彈出的操作使得棧頂的地址增大。

3. 設棧的存儲空間為S(1:50),初始狀態為top=0,現經過一系列正常的入棧與退棧操作後,top=

棧的順序存儲空間為S(1:50),初始狀態為top=0。
top可以理解為如果要再放入一個元素,這個元素存放的位置為top—1,top=0,top—1=—1,顯然不可能在存放下一個元素,所以初始狀態為滿,經過一系列操作,top為30,同理,如果要再存放一個元素,位置為30—1=29,所以現在30是有元素的,30到50,一共為21個元素,所以答案為21。

4. 在棧中,倒著壓與正著壓有什麼區別

1、入棧時top=top-1,所以是倒著。正壓入棧時top=top+1。

2、最大存放空間是m,而初始top是m+1,m+1顯然大於m,所以是倒壓棧

3、簡單的判斷就是直接看存儲空間最大是多少,如果初始top指向的就是最大存儲空間+1就叫做倒壓,從大存儲空間往小的存儲空間存放就叫做倒壓

4、棧分兩種,開口向下和開口向上的,看top值的大小,入退棧後top值降低就是從上向下壓底,如果是開口向上則是棧底的值降底

(4)存儲空間top值擴展閱讀

數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索演算法和索引技術有關。

Sartaj Sahni在他的《數據結構、演算法與應用》一書中稱:「數據結構是數據對象,以及存在於該對象的實例和組成實 例的數據元素之間的各種聯系。

這些聯系可以通過定義相關的函數來給出。」他將數據對象(data object)定義為「一個數據對象是實例或值的集合」。

Clifford A.Shaffer在《數據結構與演算法分析》一書中的定義是:「數據結構是ADT(抽象數據類型Abstract Data Type) 的物理實現。」

5. 棧的存儲空間:1—m,top=1,不就是在棧頂嗎,插入一個,top=2,這樣理解哪裡不對

棧是先進後出的嘛,棧頂一開始是m+1,那麼入站一個元素後,棧頂將變成m,相當於減1。如果你不好想像,我舉個例子。如果你把一個杯子打上刻度,杯口是1,杯底是10,杯子的大小剛好能放進一個橘子,如果我們認為一開始杯底是棧頂,也就是10,那麼放一個橘子之後,杯底就變成9了,因為你不能再把東西放到比9大的地方,同理,8、7、6,如果你往外拿一個橘子,也是先拿上面的,這就是先進後出,後進先出。

6. 棧的初態為什麼是top=m+1

因為top是指向最後一個元素上面的那個,所以是m+1 。

棧的順序存儲空間為S(1:50),初始狀態為top=0。現經過一系列入棧與退棧運算後,top=20,則棧頂-棧底=20-0=20個元素。

棧是向上增長的,每次壓入一個元素,棧的TOP指針向上移動一位。當壓入第一個元素時,TOP指針指向m+1-1 = m當壓入第二個元素時,TOP指針指向m+1-2 = m-1。以此類推,當壓入第N個元素時,TOP指針指向m+1-N = 20則N = m+1-20 = m-19。

棧的順序存儲空間為S(1:50),初始狀態為top=0。現經過一系列入棧與退棧運算後,top=20,則棧頂-棧底=20-0=20個元素。一般平時是從棧底向棧頂壓,這道題目中是倒過來的,這個棧是從棧頂向棧底壓的,所以結果是C。

top是指向最後一個元素上面的那個,所以是m+1 。

(6)存儲空間top值擴展閱讀:

棧作為一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。

棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指針。

棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為先進後出表。

7. 設棧的順序存儲空間為 S(1:m),初始狀態為top=-1,則棧中的數據元素個數為top+1

初始狀態為top=-1,說明棧空時top=-1;入棧時棧頂指針是加操作,每入棧一個元素,則棧頂指針top的值加1。故棧中元素的個數應為top+1.
當初始狀態為top=m+1時,棧空時top指針為m+1,入棧時棧頂指針是減操作,每入一個,則top減1,設此時 元素為x,則m+1-x=top,可得元素個數為x=m-top+1.
手打不易,供大家評閱,互相交流,如果有用,煩請回復,只想知道大家得到了幫助,希望大家能喜歡。

8. 設棧的存儲空間為S(1:m),初始狀態為TOP=m+1。經過一系列入棧與退棧操作後,TOP=m

m+1 。

這個棧是從棧頂向棧底壓的,一般平時是從棧底向棧頂壓,這道題目中是倒過來的。

若TOP≥n時,則給出溢出信息,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢出);置TOP=TOP+1(棧指針加1,指向進棧地址);S(TOP)=X,結束(X為新進棧的元素)。



(8)存儲空間top值擴展閱讀:

若TOP≤0,則給出下溢信息,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢);X=S(TOP),(退棧後的元素賦給X):TOP=TOP-1,結束(棧指針減1,指向棧頂)。

定義stack的簡單代碼:

stack<int> sta;

入棧:sta.push(x);

出棧:sta.pop();

判斷棧的大小: sta.size();

判斷棧是否為空:sta.empty();