資料結構 楊輝三角 佇列實現c語言實現

2021-10-23 10:16:51 字數 1344 閱讀 9367

楊輝三角除第一行為兩個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個數,且根據迴圈佇列的特性 少用乙個元素...