1樓:悽清的小白鼠
我來補充吧,其實進棧出棧是可以同時進行的,並不一定要全部進去再出來,可以先進一部分再出來,所以關鍵是從那個開始先出
1.第一個先出的為d 則必須為dcba
2.第一個出來的是c則可為 cdba (abc依次進然後c出來d進去再出來然後ba出來) 也可為cbad (cb出來d進 、出,a出)也可為cbda 就是c之前的ab必須先b再a 因為是a先進而b是後進(注意是沒有出去)
3、同理第一個為b時可以為 bcda、bdca、bacd、badc、bcad(bdac是不行的因為要d排第二必須c進去而沒有出來也就是說c必須先a而出)
2樓:憑實陀雪
n個資料依次入棧,出棧順序種數的遞推公式如下:
f(n)=∑(f(n-1-k)*fk);其中k從0到n-1已知f0=1,
f1=f0*f0=1
f2=f1*f0+f0*f1=2
f3=f2*f0+f1*f1+f0*f2=5……證明的話,對於n個資料,我只看第一個資料的出入棧順序:
第一個資料入棧到出棧之間可以包含0,1,2…n-1個資料的出入棧,相應的,第一個資料出棧之後,還有n-1,n-2…2,1,0個資料需要出入棧
根據組合數學裡面的乘法原理,需要把第一個資料出棧前後的種數相乘根據加法原理,需要把第一個資料出入棧的n種方式全加起來於是就得到了那個遞推公式,不過,要找出一個直接計算fn的公式似乎不太好辦。
在arm規定的堆疊中,多暫存器入棧的順序是什麼?
3樓:du知道君
設堆疊指標r13初始值為#0x50,則: stm指令執行完後堆疊指標r13=( 0x60 )。請在圖中標出stm指令執行完後堆疊段的資料存放情況。
ldm指令執行完後堆疊指標r13=( 0x50 ),各暫存器的值分別為: (r1)=( 0x11 ) ,(r2)=( 0x22 ) ,(r3)=( 0x33 ) ,(r4)=( 0x44 ) ,(r5)=( 0x55 )
為什麼說棧底元素總是最先被插入的元素,從而也是最後才能被刪除,不是說棧底不允許被插入刪除嗎
4樓:瘋狂夏風翼
你這句話沒有理解嗎?棧底元素總是最先被插入的元素,從而也是最後才能被刪除,這句話總該明白了?這時的棧底元素已經成為了棧頂元素,當然可以刪除了啊~~~
5樓:匿名使用者
棧底元素總是最先被插入的元素,從而也是最後才能被刪除
不是最後的那一個時不允許被插入刪除
6樓:聽不清啊
棧的插入和刪除操作,都是在棧頂進行的。
只有空棧時,才能在棧底插入元素;
只有在棧中僅剩一個元素時,才能在棧底刪除元素。
7樓:騰訊電腦管家
彈出一個棧頂元素,那麼棧頂高度自然就會減1。
先用一個變數儲存彈出的元素stack[topofstack],然後將棧頂高度topofstack減1.
8樓:dyx瀟酈平凡
因為棧只能在棧頂插入和刪除,當我們在棧頂連續執行插入時,棧底元素就會是我們剛剛第一個插入的元素(最早被插入的元素);當我們在棧頂連續不斷執行刪除時,棧底元素就會是我們最後刪除的元素(最後被刪除的元素)。
?不知道對不對
9樓:
在資料結構中,關於對堆疊(stack)的操作,一直都是這樣的:首先設定一個空棧、並設定一個棧頂指標,然後就可以根據程式的需要往裡面壓入一個(或者是多個)元素(即:壓棧操作),然後棧頂指標加 1,而出棧操作則相反:
最後入棧的元素首先彈出堆疊,棧頂指標減 1。
只要在對堆疊的操作進行越界的判斷(下溢、上溢的判斷是必須的),那麼插入、刪除就可以根據自己程式設計的需要進行控制。
10樓:匿名使用者
棧的限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。話中強調的是插入刪除時的先後問題。
棧底不允許被插入刪除這個說法不準確,棧按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,與其說棧底不如說不允許在元素序列的中間插入和刪除元素,明白要點在**就好
11樓:匿名使用者
第一個「插入」的意思其實是放入,第二個「插入」是插隊的意思。堆疊不能插隊,只能逐個放入元素和取出元素,按你的表述,放入(push)=第一個「插入」,取出(pop)=「被刪除」。你要真正理解堆疊就要表述準確,很好理解的。
存入堆疊只有push操作,讀取堆疊資料可以用指標,程式設計裡很多使用pop操作時也會直接反饋出最後一個元素並且從堆疊中刪除它。
12樓:心妙
這裡的棧底元素和棧底不是一個概念。不用太糾結哈。
棧底元素指的是最接近棧底的元素,元素入棧過程是「堆疊指標先+1而後才有入棧」,因此不使用堆疊指標的初值,就像有一個底把元素們兜住了。
13樓:小小雨泡
可以去看看後進先出原則,具體還是要去查詢一下。
14樓:靳葉運碧萱
因為棧具有後進先出的性質,所以棧底的元素最先進棧。當元素依次進棧後,要刪除元素只有從棧頂開始,所以棧底元素最後被刪除。。。
15樓:匿名使用者
沒有不能刪除棧底這種說法,當棧的元素只剩一個的時候,棧頂也是棧底,出棧刪的是棧頂同時也是棧底,棧為空的時候插入的位置就是棧底
arm linux kernel裡面為什麼要在核心棧的棧底保留8個byte
16樓:兄弟連教育
你這個**明顯是要編譯核心模組的,而核心模組是執行在核心空間的,所以它使用的 stack 是核心中的棧,即8k (或4k)大校
出棧、入棧時item的含義有什麼不同
用一個棧實現另一個棧的排序 25
進棧順序1,2,3,4,出棧順序多少種
4312嗎?肯定不能4 3 1 2了.假設第一個是 4 出棧,那麼就說明前面 進棧順序只能是 1,2,3 那麼出棧順序使能是 4,3,2,1了.6423 n 個元素順序入棧,則可能的出棧序列有多少 我來補充吧,其實進棧出棧是可以同時進行的,並不一定要全部進去再出來,可以先進一部分再出來,所以關鍵是從...
設計棧類實現初始化棧入棧出棧判棧空
include using namespace std typedef char elemtype typedef class linknode delete p int listack stacklength listack s return i int listack stackempty li...
關於元素含量,人體中元素含量順序
這個自然界指的是地球還是宇宙?地球 o 原因參考 自然界中的化學元素 1 地殼中最多的元素 o 2 地殼中最多的金屬元素 al 地殼中含量前四位的元素依次是氧 矽 鋁 鐵。空氣中含量最多的元素是氮元素。3 海水 人體中最多的元素 o 宇宙 h 在宇宙誕生時首先產生的就是h,佔了99.999 直到今天...