導航:首頁 > 源碼編譯 > 進棧演算法代碼

進棧演算法代碼

發布時間:2024-04-30 02:13:05

Ⅰ 1,2,3,4依次進棧,出棧隨時,寫一演算法求出所有可能出棧序列

代碼如下:

#define N 4

int m=0,a=0,b=N;/*m表示種數,a表示棧中元素個數,b表示外面還有需要進棧的個數*/

main()

{

inS(a,b);/*首先入棧*/

printf("%d",m);

getch();

}

int inS(int a,int b)/*入棧*/

{

a++;b--;/*入棧棧中元素+1,棧外元素-1 */

if(b>0)/*若棧外有元素,可以入棧*/

inS(a,b);

if(a>0)/*若棧中有元素,可以出棧*/

outS(a,b);

}

int outS(int a,int b)/*出棧*/

{

a--;/*出棧棧中元素-1*/

if(a==0&&b==0)/*若棧中元素和棧外元素都為0個*/

{

m++;/*則此種情況的序列滿足條件,種數+1*/

return;

}

if(b>0)

inS(a,b);

if(a>0)

outS(a,b);

}

(1)進棧演算法代碼擴展閱讀

棧的相關知識點:

順序棧內容包含數據和棧頂指針(int),因此採用結構體。

注意:

1、初始時,top指向-1;

2、入棧時,先判斷順序棧是否已滿(判斷條件:top=maxsize-1);如果沒滿,則top++,並將元素值賦給s.top;

3、出棧時,先判斷順序棧是否已空(判斷條件:top=-1);如果沒空,則先返回棧頂元素,再top- -。

共享棧

兩個順序棧共享一個一維數組空間,而棧底位置相對不變,兩個棧底分別設為一維數組的兩端。

note:

(1)棧空:top1==-1&&top2==maxsize;

(2)棧滿:top2-top1= 1(此時兩個棧頂指針相鄰);

(3)入棧:S.data[++top1]=x或S.data[–top2]=x;

(4)出棧:x=S.data[top1–]或x=S.data[top2++];

(5)共享棧可以更好的利用存儲空間,整個存儲空間被占滿時發生上溢。

閱讀全文

與進棧演算法代碼相關的資料

熱點內容
完全隨機演算法 瀏覽:31
怎麼看文件是否是日語解壓 瀏覽:353
電影打分python代碼 瀏覽:350
androidjni獲取簽名 瀏覽:111
解壓文件電腦上哪裡找 瀏覽:447
linuxcutc 瀏覽:173
金穗蜀道通etc用什麼app辦理 瀏覽:123
阿雲伺服器系統盤與數據盤的區別 瀏覽:213
gcc編譯器可以用於單片機嗎 瀏覽:259
xmanagerlinux配置 瀏覽:664
文件夾視頻沒有聲音怎麼回事 瀏覽:83
閃閃app是什麼軟體 瀏覽:206
win7下引導linux 瀏覽:793
陝西bgp伺服器雲主機 瀏覽:934
ug編程有幾種加工方式 瀏覽:447
錘子手機如何添加桌面文件夾 瀏覽:465
公司早會拍照用哪個app好 瀏覽:424
學習打卡聲音解壓視頻 瀏覽:824
如何使用代理伺服器加速上網 瀏覽:266
找企業負責人電話用什麼app 瀏覽:427