列印楊輝三角形知識點 迴圈佇列實現楊輝三角形的列印

2021-10-13 08:45:42 字數 2581 閱讀 2598

#include

using namespace std;

#define queueelementtype int //佇列的元素型別

#define maxsize 50 //佇列的最大長度

//佇列的結構體定義

typedef struct

queueelementtype elem[maxsize]; //佇列陣列

int front; //頭指標指示器

int rear; //尾指標指示器

}seqqueue;

//初始化佇列

void initqueue(seqqueue *q)

q->front = q->rear = 0;

//判斷佇列是否為空

int isempty(seqqueue *q)

if (q->front == q->rear)

//若隊頭指標和隊尾指標指向同乙個單元,則表示佇列空

return 0;

else

return 1;

//元素入佇列操作

int enterqueue(seqqueue *q, queueelementtype x)

if ((q->rear + 1) % maxsize == q->front)

//隊頭指標加1追上隊尾指標,表示佇列已滿,則無法入隊

return 0;

q->elem[q->rear] = x; //將元素x放入隊尾指標所指的單元

q->rear = (q->rear + 1) % maxsize; //隊尾指標向前移動乙個單元

return 1;

//元素出佇列操作

int deletequeue(seqqueue *q, queueelementtype *x)

if (q->front == q->rear) //若隊列為空,則不能做出佇列操作

return 0;

*x = q->elem[q->front]; //佇列非空,將隊頭指標所指元素x所指單元

q->front = (q->front + 1) % maxsize;

//隊頭指標向前移動乙個單元

return 1;

//獲取隊頭元素

int gethead(seqqueue *q,queueelementtype *x)

if (q->front == q->rear) //若隊列為空,則無法獲取元素

return 0;

*x = q->elem[q->front]; //佇列非空,將隊頭元素出佇列並放入x所指單元

return 1;

//列印楊輝三角形

void yanghui********(int n)

queueelementtype temp, x; //區域性變數,用於元素的出佇列和入佇列

seqqueue q; //宣告乙個佇列變數

initqueue(&q); //初始化乙個空佇列

enterqueue(&q, 1); //第一行元素入佇列

for (int n = 2; n <= n + 1; n++){

//產生第n行元素併入佇列,同時列印出第n-1行的元素

enterqueue(&q, 1); //第n行的第乙個元素入佇列

for (int i = 1; i <= n - 2; i++){

//利用隊中第n-1行元素產生第n行中間的n-2個元素併入佇列

deletequeue(&q, &temp); //第n-1行的元素出佇列

cout << temp << " "; //列印第n-1行的元素

gethead(&q, &x); //獲取佇列的頭元素

temp = temp + x; //利用第n-1行的元素產生第n行元素

enterqueue(&q, temp); //第n行的元素入佇列

deletequeue(&q, &x); //第n-1行的最後乙個元素出佇列

cout << x << " "; //列印第n-1行的最後乙個元素

cout << endl;

enterqueue(&q, 1); //第n行的最後乙個元素入佇列

while (!isempty(&q)){ //列印最後一行元素

deletequeue(&q, &x);

cout << x << " ";

//主函式(程式入口)

int main(void){

int n; // 楊輝三角形的行數

int flag = 1; //程式執行標誌,當輸入0時,退出程式

while (flag){

cout << "input the rows of yanghui********,

please:";

cin >> n;

yanghui********(n);

cout << endl;

cout << "would you once again? yes, input one, please.

no, input zero, please: ";

cin >> flag;

system("cls"); //呼叫系統函式清屏

return 0;

利用迴圈佇列列印楊輝三角形

利用迴圈佇列列印楊輝三角形 首先需要掌握的是循壞佇列的基本函式 1 初始化 2 入隊 3 出隊 其次需要明確列印的循壞巢狀 最後將 整合在一起 include include define maxsize 100 循壞佇列的儲存結構定義 typedef struct queue 初始化操作 void...

列印楊輝三角形

列印楊輝三角形 1000 ms 10000 kb 3016 15287 楊輝三角形具有如下特徵 1 每行數字左右對稱,由1開始逐漸變大,然後變小,回到1。2 第n行的數字個數為n個。3 第n行數字和為2 n 1 4 每個數字等於上一行的左右兩個數字之和。可用此性質寫出整個帕斯卡三角形。5 將第2n ...

列印楊輝三角形

列印楊輝三角形 楊輝三角形就是呈現金字塔型的結構 每個的數字表示式為 a n,x a n 1,x a n 1,x 1 結構如下 11,1 1,2,1 1,3,3,1 1,4,6,4,1 解題思路 迴圈列印的行數,由於對稱型每行的資料型別可以只計算一半,後面的一半完全對折過來。上 public sta...