导航:首页 > 源码编译 > 进栈算法代码

进栈算法代码

发布时间: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)共享栈可以更好的利用存储空间,整个存储空间被占满时发生上溢。

阅读全文

与进栈算法代码相关的资料

热点内容
为什么app的密码总是不正确 浏览:324
方舟手机版为什么进不了服务器 浏览:594
服务器ip可以查到真实地址吗 浏览:656
象棋软件算法 浏览:993
飘零加密 浏览:175
文件加密软件哪个好用免费保险柜 浏览:752
黑石物理服务器是云服务器吗 浏览:621
java读文件一行 浏览:793
熔火之心服务器是什么 浏览:628
汤子瀛第四版pdf 浏览:827
刚刚解压的车能过户吗 浏览:523
pdf证书加密开发 浏览:159
android缓存工具类 浏览:220
pic单片机秒表 浏览:632
源代码如何放到服务器 浏览:73
增量方式编程 浏览:228
单片机反接为啥会烧坏 浏览:944
河北网络服务器云服务器 浏览:352
编程序员年薪百万 浏览:998
网通的宽带玩电信服务器地址 浏览:828