出栈序列问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:59:33
有n个数依次入栈,求所有可能的出栈序列及其个数。
输入文件为一个整数
例如:
3
输出文件前n行为所有可能的出栈序列,第n+1行为所有出栈序列的总个数。
例如:
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
5
输出结果要按增序排列
用c语言实现

先谢过了
给出一个数n,将n个数入栈,求可能的出栈序列
还是不行啊,好多错误

可能写得有点乱
怎么会有错误,你把错误信息列出来。

#include <stdio.h>
#define Size 50

struct stack{
int t;
int a[Size];
stack() {
t=0;
}
};

stack b;
int s=0,a[Size],le,m,f[Size],tf=0;

void getin(int x)
{
b.a[b.t]=x;
b.t++;
return;
}

int getout()
{
b.t--;
return b.a[b.t];
}

void print()
{
int i;
printf("%d",f[0]);
for (i=1;i<tf;i++)
printf(" %d",f[i]);
printf("\n");
return;
}

void st()
{
if ((le==0) && (b.t==0)) {s++;print();return;}
if (b.t>0)
{
int z;
z=getout();
f[tf]=z;tf++;
st();
getin(z);