#include<bits/stdc++.h>
using namespace std;
class SeqQueue{
private:
int* elements; //存放队列元素的数组
int rear,front; //队尾指针和对头指针
int maxSize; //队列可容纳的最大元素个数
public:
SeqQueue(int sz=10); //构造函数
~ SeqQueue(){ delete[]elements;} //析构函数
bool EnQueue(const int x); //进队函数
bool DeQueue(int& x); //出队函数
bool getFront(int& x); //取队头元素
bool isEmpty(){return (front==rear)?true:false;} //判断队空
bool isFull(){return ((rear+1)%maxSize==front)?true:false;} //判断队满
};
SeqQueue::SeqQueue(int sz):rear(0),front(0),maxSize(sz){
elements=new int[maxSize];
assert(elements!=NULL); //断言机制:如果不满足括号内条件将终止程序的执行
}
bool SeqQueue::EnQueue(const int x){
if(isFull()) return false;
else
elements[rear]=x;
rear=(rear+1)%maxSize; //加一再取余是为了rear指向队列最后一个元素(下标maxSize-1),再进一下标就到了0
return true;
}
bool SeqQueue::DeQueue(int& x){
if(isEmpty()) return false;
else
x=elements[front];
front=(front+1)%maxSize;
return true;
}
bool SeqQueue::getFront(int& x){
if(isEmpty()) return false;
else
x=elements[front];
return true;
}
void YANGVI(int n){
int j,k;
int s=0,t,sum;
SeqQueue Q(n+3);
Q.EnQueue(1);
Q.EnQueue(1);
for(j=1;j<=n;j++){ //循环n次
cout<<endl;
Q.EnQueue(0);
for(k=1;k<=j+2;k++){ //输出第n行的n+1个元素
Q.getFront(t);
sum=s+t;
Q.EnQueue(sum);
Q.DeQueue(s);
if(k!=j+2)
cout<<s<<" ";
}
}
}
int main(){
int n;
cout<<"please put in the line number:"<<endl;
cin>>n;
YANGVI(n);
system("pause");
return 0;
}
循环队列打印杨辉三角
原文作者:杨辉三角问题
原文地址: https://blog.csdn.net/gettogetto/article/details/68923604
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/gettogetto/article/details/68923604
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。