/**************************************** print Yang Hui triangle date:2016-10-15 writer:liu kun Reference: Data structure Yin *****************************************/#include <iostream> #include <iomanip> #include "queue.h" The using namespace std;//controls the digital interval char blank[3+1] = " "; void Yangvi (int n) { Queue q; EnQueue (q,1); EnQueue (q,1); int i,j; Qelemtype s=0,t; for (i=1;i<=n;i++) { cout<<endl; The starting position of each line is typeset for (int bl_count=0;bl_count<n-i;bl_count++) cout<<blank; EnQueue (q,0); for (j=1;j<=i+2;j++)//Line I i+2 coefficients, including a 0 { DeQueue (q,t); EnQueue (q,s+t); Calculate the next row coefficients to merge into Team s=t; if (j!=i+2) cout<<setw (sizeof (blank)-1) <<s<<blank; }} ; int main () { Yangvi (ten); return 0;}
> queue.h
#ifndef queue_h_included#define queue_h_included#define MAXSIZE 500typedef int qelemtype;typedef struct queue{ int Maxsize=maxsize; Qelemtype *data=new qelemtype[maxsize]; int front=0; int Rear=front;} Queue;void initqueue (queue &q); int EnQueue (Queue &q, Qelemtype x) { //check full if ((q.rear+1)% Q.maxsize==q.front) { return 0; } else{ q.data[q.rear]=x; Q.rear = (q.rear+1)%q.maxsize; return 1;} } int DeQueue (Queue &q,QElemType& x) { //check empty, ERROR code 1 if (Q.rear==q.front) return 0; else{ x = Q.data[q.front]; Q.front= (q.front+1)%q.maxsize; return 1;} } int Queueempty (Queue &q) { if (Q.rear==q.front) return 1; else return 0;} Reference as address value int queuefull (Queue &q) { return (q.rear+1)%q.maxsize==q.front;} int queuesize (queue& q) { return (Q.rear+q.maxsize-q.front)%q.maxsize;} #endif//queue_h_included
C + + print print Yang hui triangles