資料結構複習 佇列列印楊輝三角

2021-08-23 12:37:37 字數 1330 閱讀 5741

問題介紹:

如果將二項式(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=...

問題分析:

楊輝三角從外形上有個很重要的特徵——三角中的任意乙個系數值(第一行除外)可以看成乙個其肩膀上的兩個係數之和;對於某一邊側肩膀上沒有的係數地方,可以看作此處有個預設值0。因此求任意一行i(i>=2)的系數值時,可以由i-1行的系數值來獲得,借助乙個輔助的資料結構佇列,事先將上一行的系數值入佇列,包括預設的行末尾的係數0(行首預設的係數0預存在乙個變數s中),利用出佇列運算,每齣乙個係數t,利用他的值和前面剛出佇列的系數值s之和得到下一行相應位置的系數值,並把剛得到的系數值入佇列,並把t值賦給s,迴圈下去,可以得到所需指定行數的楊輝三角。具體演算法如下。

演算法:

void yanghui_********(int n)}}

putchar('\n');

destroy_seqqueue(&sq);

}

完整**實現:

#include

#include

#define maxsize 100

typedef

structseqqueue,*pseqqueue;

pseqqueue init_seqqueue()

return q;

}int empty_seqqueue(pseqqueue q)

}int in_seqqueue(pseqqueue q,int x)

else

return1;}

int out_seqqueue(pseqqueue q,int *x)

else

}void destroy_seqqueue(pseqqueue *q)

*q = null;

}void yanghui_********(int n)}}

putchar('\n');

destroy_seqqueue(&sq);

}int main()

實現結果截圖:

用迴圈佇列實現列印楊輝三角(資料結構)

列印二項式係數表 即楊輝三角 1 2 1 1 3 3 1 1 4 6 4 1 係數表中的第k行有k 1個數,除了第乙個數和最後乙個數為1外,其餘的數則為上一行中位其左右的兩數之和。如果要求計算並輸出楊輝三角前n行的值,則佇列的最大空間應為n 2 第n行有n 1個數,且根據迴圈佇列的特性 少用乙個元素...

迴圈佇列 列印楊輝三角

利用迴圈佇列列印楊輝三角前n行的值 n 7 並以金字塔的形式輸出相應的值。include define max 100 define false 0 define true 1 迴圈佇列 typedef struct seqqueue 初始化迴圈佇列 void initqueue seqqueue ...

鏈佇列 列印楊輝三角

include include typedef int elemtype typedef struct sqqueuesqqueue typedef sqqueue linkqueue typedef struct queueptrqueueptr intinsiqueue queueptr s s...