楊輝三角除第一行為兩個1以外,從第二行開始,每一行的首尾都為1,中間位置的數為上一行其左右兩側數之和,形狀如下:
1 11 2 1
1 3 3 1
1 4 6 4 1
試編寫函式,利用迴圈佇列實現任意行楊輝三角的輸出。
如果要求計算並輸出楊輝三角前 n 行的值,則佇列的最大空間應為 n + 2。(進進出出的)
假設佇列中已存有第 k 行的計算結果,並為了計算方便,在兩行之間新增乙個「0」作為行界值,
則在計算第 k + 1 行之前,頭指標正指向第 k 行的「0」,而尾元素為第 k + 1 行的「0」。
由此從左到右依次輸出第 k 行的值,並將計算所得的第 k + 1 行的值插入佇列
#define maxlen 100
#define empty_queue_error -9999999
typedef
int elemtype;
typedef
struct
intqueue;
/*初始化(調整兩個位置標識量)*/
void
initqueue
(intqueue* pqueue)
// 指標型別作為形參,某個佇列例項的位址
/*利用迴圈佇列實現任意行楊輝三角的輸出?*/
void
yanghuitiangle
(int n)
/*後續的行*/
// 迴圈: 逐行處理,
/*將第i行 出隊 並輸出,
生成第i+1行 入隊;
在出隊輸出第i行前要先把下一行(即第i+1行)算好並插入佇列後才輸出,否則下一行的計算就沒有輸入了) (注意是從從頭(q->front)出隊(儲存到e),先進先出);*/
for(
int i =
1; i <= n; i++
)//i是要輸出的行,i+1是要填充的行 }}
//for(j)
printf
("\n");
// 結束i行,輸出換行符
}//for(i)
}//測試, 使用實際例子測試上述函式是否正常工作
/*入佇列
將某資料元素x入佇列,成功返回1,失敗返回0。*/
intenqueue
(intqueue* pqueue, elemtype x)
return1;
}/*對頭元素出佇列*/
intdequeue
(intqueue* pqueue)
return empty_queue_error;
}void
main()
}
佇列實現楊輝三角
1 首先,需要初始化乙個佇列,即對頭 隊尾 0 2 將第一行的元素1入隊,接著操作第二行 一二行不需要求和操作,直接將元素入隊即可 3 從第三行開始,現在的隊頭指向n 1行,先將每行的固定元素1入隊,然後迴圈操作求和過程 將隊首元素出隊,並儲存它的值temp 獲取當前隊首的元素x,並進行temp t...
資料結構複習 佇列列印楊輝三角
問題介紹 如果將二項式 a b i i 2,3,4 展開,其係數排列成楊輝三角,如何實現各行係數的前n行列印出來,如下所示 0 1 1 0 i 1 0 1 2 1 0 i 2 0 1 3 3 1 0 i 3 0 1 4 6 4 1 0 i 4 i 問題分析 楊輝三角從外形上有個很重要的特徵 三角中的...
用迴圈佇列實現列印楊輝三角(資料結構)
列印二項式係數表 即楊輝三角 1 2 1 1 3 3 1 1 4 6 4 1 係數表中的第k行有k 1個數,除了第乙個數和最後乙個數為1外,其餘的數則為上一行中位其左右的兩數之和。如果要求計算並輸出楊輝三角前n行的值,則佇列的最大空間應為n 2 第n行有n 1個數,且根據迴圈佇列的特性 少用乙個元素...