/*
栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。
你已经知道栈的操作有两·种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。
现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。
请你编程求出对于给定的n,计算并输出由操作数序列1,2,…,n,
经过一系列操作可能得到的输出序列总数
*/
#include "stdlib.h"
#include "stdio.h"
int n = 0;/*元素个数*/
int *A = NULL;/*记录序列*/
int *operate = NULL;/*记录栈操作,值为1表示PUSH,值为2表示POP*/
int *Stack = NULL;/*栈数组*/
int Num = 0;/*可能产生的序列的个数*/
/*打印序列*/
void Print ()
{
int i = 0;
printf("%d sequence is as followed:/n", Num);
while (i < 2*n)
{
if (operate[i] == 1)
printf("push ");
if (operate[i] == 2)
printf("pop ");
i++;