資料結構(C ) 用鏈佇列計算楊輝三角

2021-08-28 22:13:43 字數 1573 閱讀 2624

目錄

第一節  概述

第二節  開源**

楊輝三角是二項式係數在三角形中的一種幾何排列,是中國古代數學的傑出研究成果之一。它把二項式係數圖形化,把組合數內在的一些代數性質直觀地從圖形中體現出來,是一種離散型的、數與形的結合。

在實際計算楊輝三角時,最常使用的數學規律是:

除第1行只有唯一的元素1外,每行的首元素和尾元素都是1;

從第3行開始,中間的每乙個元素是上一行左右2個元素的和。

由於楊輝三角的特殊性,我們採用鏈式佇列結構儲存與計算。

既然涉及到鏈式儲存結構,首先要定義結點的資料儲存格式。

每乙個結點包含乙個資料域和乙個指標域,資料域用於存放佇列的真實元素,指標域則指向佇列中的下乙個結點。

/**

* 編者注:

* 由於使用了c++作為程式語言

* 建議使用*.hpp作為標頭檔案的字尾名

* *.h是c語言使用的標頭檔案字尾名

*/#pragma once

template struct node

;

佇列是一種具有操作限制的表結構:只能在佇列開頭刪除元素(出隊)、讀取元素(讀隊頭),只能在佇列末尾新增元素(入隊)。除了這些基本操作,佇列還需要判空。

由於是鏈式儲存,必須由我們自己編寫建構函式與析構函式,用於開闢和釋放佇列的結點。

/**

* 編者注:

* 下面的類與上面的結構體是配套的

* 強烈建議放在同乙個標頭檔案中

*/template class linkqueue

;

#include #include //輸出格式設定

/** * 記得在此處引入上面的標頭檔案(建議使用*.hpp)

*/using namespace std;

template linkqueue::linkqueue()

template linkqueue::~linkqueue()

}template void linkqueue::enqueue(datatype x)

template datatype linkqueue::dequeue()

template datatype linkqueue::getqueue() const

template bool linkqueue::empty() const

現在,終於到了解釋主演算法的時候了!每一句的邏輯都注釋在**中:

//楊輝三角,其中n是總行數

void ncr(int n)

else if (i > 2) //第3行及之後

cout << setw(3) << queue.dequeue() << endl; //輸出上一行末尾的元素1

}queue.enqueue(1); //在行尾補元素1

}//若佇列非空,輸出最後一行的元素

while (!queue.empty())

cout << endl

<< endl;

}

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

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

鏈佇列 列印楊輝三角

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

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

問題介紹 如果將二項式 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 問題分析 楊輝三角從外形上有個很重要的特徵 三角中的...