目錄
第一節 概述
第二節 開源**
楊輝三角是二項式係數在三角形中的一種幾何排列,是中國古代數學的傑出研究成果之一。它把二項式係數圖形化,把組合數內在的一些代數性質直觀地從圖形中體現出來,是一種離散型的、數與形的結合。
在實際計算楊輝三角時,最常使用的數學規律是:
除第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 問題分析 楊輝三角從外形上有個很重要的特徵 三角中的...