棧是常用的一種數據結構,有 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;
}