棧是常用的一種數據結構,有 n 個元素在棧頂端一側等待進棧,棧頂端另一側是 出棧序列。你已經知道棧的操作有兩種:push 和 pop,前者是將一個元素進棧,后 者是將棧頂元素彈出。現在要使用這兩種操作,由一個操作序列可以得到一系列 的輸出序列。請你編程求出對於給定的 n,計算並輸出由操作數序列 1,2,…,n, 經過一系列操作可能得到的輸出序列總數。


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

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM