出栈次序的总数

1.卡特兰数:h[1]=1;h[n]=h[n-1]*(4*n-2)/(n+1)

2.f(n) = f(0)*f(n-1) + f(1)*f(n-2) + … + f(n-1)*f(0) 
        即

//顺序存储的栈 实现文件 / #include <stdio.h> #include <stdlib.h> #include "SeqStack.h" /*创建一个栈*/ SeqStack* SS_Create(int maxlen) { SeqStack* ss=(SeqStack*)malloc(sizeof(SeqStack)); ss->data=(T*)malloc(maxlen*sizeof(T)); ss->top=-1; ss->max=maxlen; return ss; } /*释放一个栈*/ void SS_Free(SeqStack* ss) { free(ss->data); free(ss); } /*清空一个栈*/ void SS_MakeEmpty(SeqStack* ss) { ss->top=-1; } /*判断栈是否为满*/ bool SS_IsFull(SeqStack* ss) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ return ss->top>=ss->max-1; /******END******/ } /*判断栈是否为空*/ bool SS_IsEmpty(SeqStack* ss) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ if(ss->top==-1) { return true; } else { return false; } /******END******/ } /*获取栈元素个数*/ int SS_Length(SeqStack* ss) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ return ss->top+1; /******END******/ } /*将x进栈,满栈则无法进栈(返回false)*/ bool SS_Push(SeqStack* ss, T x) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ if(SS_IsFull(ss)) return false; else { ss->top++; ss->data[ss->top]=x; return true; } /******END******/ } /*出栈出栈的元素放入item,空栈则返回false*/ bool SS_Pop(SeqStack* ss, T &item) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ if(SS_IsEmpty(ss)) return false; else { item=ss->data[ss->top]; ss->top--; } /******END******/ } /*获取栈顶元素放入item中,空栈则返回false*/ bool SS_Top(SeqStack* ss, T & item) { if (SS_IsEmpty(ss)) { return false; } item = ss->data[ss->top]; return true; } /*从栈底到栈顶打印出所有元素*/ void SS_Print(SeqStack* ss) { if (SS_IsEmpty(ss)) { printf("stack data: Empty!\n"); return; } printf("stack data (from bottom to top):"); int curr=0; while(curr<=ss->top) { printf(" %d", ss->data[curr]); curr++; } //printf("\n"); }
最新发布
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值