# Self built queue, output Yanghui triangle with queue

Posted by townclown on Sat, 25 Jan 2020 15:51:02 +0100

Title: according to the queue knowledge of data structure, an algorithm is compiled to output Yanghui triangle with queue
Solutions:
1. Build a self built queue and put the data of Yanghui triangle at the end of the queue;
2. When printing, take out the queue head for printing and delete it from the queue;
The code is as follows:
Queue code

```package queue;
/**
* Define a queue
*/
public class Queue<T> {
private   Object[] data; //Data stored in the queue
private int maxSize ; //Size of the queue
private int front ;//Pointer to the head of the queue
private int rear ; //Pointer to the end of the queue
public Queue(int size){
if (size < 0)
throw new IllegalArgumentException("data is invalid: "+
size);
this.maxSize = size;
this.data = new Object[maxSize];
front = -1;
rear = -1;
}
/**
* Determine whether the queue is full
* @return
*/
public boolean isFull(){
return rear == maxSize -1 ;
}

/**
* Judge whether the queue is empty
* @return
*/
public boolean isEmpty(){
return rear == front;
}

/**
* @param n
*/
if(isFull()){
System.out.println("The queue is full and cannot be added");
return;
}
data[++rear] = t;
}

/**
* @return
*/
if(isEmpty()){
throw new RuntimeException("Queue is empty");
}
Object obj=data[front+1];
return obj;
//System.out.println(data[front+1]);
}

/**
* Take out the header data
* @return
*/
public Object pop(){
if(isEmpty()){
throw new RuntimeException("Queue is empty");
}
Object obj = data[++front];
data[front] = null;
return obj;
}

/**
* Print all data
*/
public void print(){
if(isEmpty()){
System.out.println("Queue is empty");
return;
}
for(int i=0;i<data.length;i++){
System.out.printf("array["+i+"]=%d\n",data[i]);
}
}
}

```

Print Yanghui triangle Code:

```import queue.Queue;
import java.util.Scanner;

public class YhTrianQueue {
public static void main(String[] args) {
System.out.println("How many lines do you want?:");
Scanner input = new Scanner(System.in);
//Enter the number of lines in Yang Hui triangle
int lines = input.nextInt();
//Create a 2D array to hold data
int[][] array=new int[lines][lines];
//The length of queue created is the total number of data in Yanghui triangle (n*(n+1))/2
Queue<Integer> queueI = new Queue((lines*(lines+1))/2);
//Loop data in queue
for (int i=0;i<lines;i++){
//Printing value
for (int j=0;j<i+1;j++){
if ((i >= 2) && (j >= 1)&&(j < i)){
array[i][j] = array[i-1][j-1] + array[i-1][j];
}
else {
array[i][j] = 1;
};
}
}
//Print Yanghui triangle
for (int i=0;i<=lines-1;i++) {
//Print space
for (int j=0;j<=lines-i-1;j++){
System.out.print(" ");
}
//Print value, the number of each line is the number of lines
for (int m=0; m <= i; m++) {
//Out of line
queueI.pop();
}
System.out.println();
}

}

}

```
Published 6 original articles, won praise 0, visited 1039

Topics: Java