1. 程式人生 > >佇列的應用—輸出楊輝三角

佇列的應用—輸出楊輝三角

#include"Queue.h"
#include<iostream>
using namespace std;
const int total_row = 6;
void main()
{
	void Pascal_Triangle();//函式宣告
	Pascal_Triangle();
}
void Pascal_Triangle()//楊輝三角 輸出二項式係數
{
	Queue<int> qu;//佇列
	int elem_1 = 1;//進佇列 須是引用才行
	int elem_0 = 0;
	int current_row_elem,next_row_elem;//用來出佇列和進佇列的變數
	int temp_elem = 0;//交換值
	qu.InQueue(elem_1);
	qu.InQueue(elem_1);//先把兩個1進佇列

	for(int r=1;r<=total_row;r++)//逐行處理
	{
		cout<<endl;
		qu.InQueue(elem_0);//先把待處理的這一行的首部 賦上一個0 作為標誌
		for(int c=1;c<=r+2;c++)//每一行的r+2個元素值
		{ 
			current_row_elem = qu.DeQueue();//出佇列
			next_row_elem = current_row_elem + temp_elem;//用出佇列的值 來計算下一行的值
			qu.InQueue(next_row_elem);//計算出後 進佇列
			temp_elem = current_row_elem;//每一次小迴圈結束 都會使temp_elem賦成0開始下一行的輸出
			if(c!=r+2)
				cout<<temp_elem<<" ";//把剛才出佇列的值輸出
		}//內迴圈 不停的出佇列進佇列(每當出佇列一個 就會計算進佇列的下一行的一個)
	}//迴圈全部結束後 其實佇列中還存留著row+1行的資訊 只不過只有輸出row行就結束了罷了

}