鏈隊列實現楊輝三角c++實現(數據結構)

一、功能:

把楊輝三角的數求出來存儲到隊列裏面,然後再從隊列裏面讀取數據並展示。

二、算法分析:

圖片來源:https://baike.baidu.com/item/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92/215098?fr=aladdin#4_4
算法來源 1-1

三、代碼實現:
#include <iostream>
using namespace std; 

static int LEN = 0; 
/**
	功能:隊列實現楊輝三角
	@auther		:
	@date 		: 
*/
class Queue{
	private:
		int data;				//存數據啊
	public:
		void setData(int data){
			this->data = data;
		} 
		int getData(){
			return this->data;
		}
		Queue * next;		    //類指向 
};
class LQueue{
	public:
		Queue * front;				//隊列頭
		Queue * rear;				//隊列尾 
}; 

//創建隊列
LQueue * init(){
	Queue * head = new Queue;
	head->next = NULL;
	LQueue * Q = new LQueue;
	Q->front = head;
	Q->rear = head;
	return Q;
} 

//出隊列
int pop(LQueue * Q){
	Queue * node;
	int val;
	node = Q->front->next;
	val = node->getData();
	Q->front->next = node->next;
	if(node == Q->rear){		//若隊列只有一個元素 
		Q->rear = Q->front;
	}
	delete(node);
	return val;
} 

//入隊列
void push(LQueue * Q,int val){
	//對尾+1
	 Queue * node = new Queue;
	 node->setData(val);
	 node->next = NULL;
	 Q->rear->next = node;
	 Q->rear = node;
} 

//計算
void count(LQueue * Q,int h){
	int s = 1;
	push(Q,1);									//先放1進去 
    for (int i = 2; i <= h; s = 1, i++)         // 行數 i 從 2 到層高
    {
        push(Q,1);                // 第一個 1
        for (int j = 1; j <= i - 2; j++){ // 列位置 j 繞過第一個直接開始循環
            push(Q,s=((i - j) * s / j));
        }
        push(Q,1);               // 最後一個 1,換行
    }
} 

//展示隊列
void show(LQueue * Q){
	Queue * q = new Queue;
	q = Q->front->next;
	cout<<"The queue result is:"<<endl; 
	do{
		cout<<q->getData()<<"-";
		q = q->next;
	}while(q != Q->rear->next);
	cout<<endl;
} 
 
//把隊列中的數搞成楊輝三角
void showView(LQueue * Q){
	Queue * q = new Queue;
	q = Q->front->next;
	do{
		for(int i=0;i<LEN;i++){
			for(int k=0;k<(LEN-i-1);k++){
				cout<<"  ";
			} 
			for(int j=0;j<=i;j++){
				cout<<pop(Q)<<"   ";
				q = q->next;
			}
			cout<<endl;
		}
	}while(q != Q->rear->next);
} 
 
//輸入
void input(LQueue * Q){
	int num = 0;
	int value = 0;
	cout<<"Several lines:";
	cin>>num;
	LEN = num;
	count(Q,num);
} 

int main(int argc, char** argv) {
	LQueue * Q = init();
	input(Q);
	show(Q); 
	showView(Q);
	return 0;
}
四、結果:

在這裏插入圖片描述

五、聲明:

圖片參考來源https://baike.baidu.com/item/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92/215098?fr=aladdin#4_4

六、備註:

轉載請聲明出處!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章