//代码没有很详细的解释,如果不明白,请自己根据代码一行一行分析
//分析三到四层,即可明白其中的原理
//再有问题的话,请在下面留言
#include<iostream>
using namespace std;
//我自己写的Queue,是使用链队列实现的,相关知识可以在课本上查到
template<class T>
class Queue{
public:
class Node{//内部类,用来表示每个节点
public:
T value;
Node* next = NULL;
};
int length = 0;
Node* head = NULL;//队列不同于栈,需要一个头指针,用来访问队首
Node* tail = NULL;//一个尾指针用来在队尾插入元素
Node* p = NULL;//一个中间指针,用来过渡
void push(T val){//入队操作
p = new Node;
p->value = val;
if(head == NULL){
head = p;
}else{
tail->next = p;
}
tail = p;
length++;
}
int size(){//队伍的大小
return length;
}
T pop(){//和stl标准库的pop()函数不一样,不仅可以删除头元素,还可以将头元素的值返回
T value = head->value;
p = head;
head = head->next;
delete p;
length--;
return value;
}
T front(){//返回队伍的队首元素
return head->value;
}
bool empty(){//判断队伍是否为空
return length == 0;
}
void show(){//我自己加入的一个从队首到队尾的一个输出展示函数
p = head;
while(p != NULL){
cout << p->value << " ";
p = p->next;
}
cout << endl;
}
};
//分析三到四层,即可明白其中的原理
//再有问题的话,请在下面留言
#include<iostream>
using namespace std;
//我自己写的Queue,是使用链队列实现的,相关知识可以在课本上查到
template<class T>
class Queue{
public:
class Node{//内部类,用来表示每个节点
public:
T value;
Node* next = NULL;
};
int length = 0;
Node* head = NULL;//队列不同于栈,需要一个头指针,用来访问队首
Node* tail = NULL;//一个尾指针用来在队尾插入元素
Node* p = NULL;//一个中间指针,用来过渡
void push(T val){//入队操作
p = new Node;
p->value = val;
if(head == NULL){
head = p;
}else{
tail->next = p;
}
tail = p;
length++;
}
int size(){//队伍的大小
return length;
}
T pop(){//和stl标准库的pop()函数不一样,不仅可以删除头元素,还可以将头元素的值返回
T value = head->value;
p = head;
head = head->next;
delete p;
length--;
return value;
}
T front(){//返回队伍的队首元素
return head->value;
}
bool empty(){//判断队伍是否为空
return length == 0;
}
void show(){//我自己加入的一个从队首到队尾的一个输出展示函数
p = head;
while(p != NULL){
cout << p->value << " ";
p = p->next;
}
cout << endl;
}
};
int main(){
int n;
cin >> n;//n为杨辉三角的层数
Queue<int> queue;
for(int i = 1; i <= n; i++){//n层,所以循环n次
for(int j = 0; j < i - 2; j++){//这个请读者自行体会,大概自己写个三四层之后,就能够明白其中的原理了
queue.push(queue.pop() + queue.front());//这句语句非常简练,请读者自行体会,我认为比课本上的更加简洁一些
}
queue.push(1);//这是很关键的一步
queue.show();//运算结束,展示每一行
}
return 0;
}
int n;
cin >> n;//n为杨辉三角的层数
Queue<int> queue;
for(int i = 1; i <= n; i++){//n层,所以循环n次
for(int j = 0; j < i - 2; j++){//这个请读者自行体会,大概自己写个三四层之后,就能够明白其中的原理了
queue.push(queue.pop() + queue.front());//这句语句非常简练,请读者自行体会,我认为比课本上的更加简洁一些
}
queue.push(1);//这是很关键的一步
queue.show();//运算结束,展示每一行
}
return 0;
}