循环队列打印杨辉三角

来源:互联网 发布:安装vs2015网络 编辑:程序博客网 时间:2024/06/05 01:17
#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;elseelements[rear]=x;    rear=(rear+1)%maxSize; //加一再取余是为了rear指向队列最后一个元素(下标maxSize-1),再进一下标就到了0return true;}bool SeqQueue::DeQueue(int& x){if(isEmpty()) return false;elsex=elements[front];    front=(front+1)%maxSize;return true;}bool SeqQueue::getFront(int& x){if(isEmpty())  return false;elsex=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;}

0 0
原创粉丝点击