队列加分项
实验要求
1 用实现循环队列
2 参考PPT用循环队列打印杨辉三角
3 用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息
4 把代码推送到代码托管平台
5 把完成过程写一篇博客:重点是单步跟踪过程和遇到的问题及解决过程
6 提交博客链接
实验准备
-
1、杨辉三角特点
(1)int数组中元素默认值为 0
(2)然后每一次打印新的一行的元素的时候:
新的特定位置的元素 = 该位置原来的元素 + 该位置的前一个位置的值
(3)参考老师上课给的ppt
-
2、分别定义行数和列数,每行第一列和最后一列为1
for (int i = 1; i <= n ; i++) {
for (int j = 1; j < i+1; j++) {
- 3、设置初始值
arr.enqueue(1);
arr.enqueue(0);
- 4、前一行相邻两元素之和
int num1 = (int) arr.dequeue();
int num2 = (int) arr.first();
int num = num1 + num2;
实验截图
代码实现
public class yhsj {
public static void main(String[] args) throws Stack.EmptyCollectionException {
int n = 0;
CircularArrayQueue arr = new CircularArrayQueue(n + 2);
System.out.println("how many lines you want:");
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
arr.enqueue(1);
arr.enqueue(0);
System.out.print(" "+"\n");
for (int i = 1; i <= n ; i++) {
for (int j = 1; j < i+1; j++) {
int num1 = (int) arr.dequeue();
int num2 = (int) arr.first();
int num = num1 + num2;
System.out.print(num );
arr.enqueue(num);
}
arr.enqueue(0);
System.out.println();
}
}
}
实验中遇到的问题
-
打印出的杨辉三角存在格式问题,数之间没有间距(如下图)
-
解决方法
通过添加一个条件判断语句来解决间距问题,如下图
for(int a = 0; a<j ; a++)
System.out.print(" ");