栈是常用的一种数据结构,有 n 个元素在栈顶端一侧等待进栈,栈顶端另一侧是 出栈序列。你已经知道栈的操作有两种:push 和 pop,前者是将一个元素进栈,后 者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列 的输出序列。请你编程求出对于给定的 n,计算并输出由操作数序列 1,2,…,n, 经过一系列操作可能得到的输出序列总数。
#include<stdio.h>
int number;
int sum=0;
int pop(int x,int n);
int push(int x, int n);
int pop(int x,int n)
{
x--;
if(x==0)
push(x+1,n+1);
else
{
push(x+1,n+1);
pop(x,n);
}
}
int push(int x,int n)
{
if(n==number)
sum++;
else
{
push(x+1,n+1);
pop(x,n);
}
}
int main()
{
int x=1;
printf("请输入元素的个数:");
scanf("%d",&number);
push(x,1);
printf("%d个元素的出栈方式有:%d种\n",number,sum);
return 0;
}
原文:http://www.cnblogs.com/lozjl/p/7719681.html