20162302队列加分项

20162302 队列加分项

主要内容:

一、补全课上代码,用实现循环队列

二、循环队列打印杨辉三角

三、单步跟踪排队情况,画出队列变化图


一、补全课上代码,用实现循环队列

这个项目的主要目的是使用循环队列打印出杨辉三角形,所以首先要构建循环队列

使用数组实现时,循环队列比线性队列要节省很多空间

课本上也给出了部分代码


相对于链表而言,循环数组的first()相对复杂,要考虑到front指针指向数组长度之外的位置(比如数组长度为10,指针指向11)的情况:

  • 如果是直接引用queue[front]指向的对象会出现空指针
public T first() {
        return queue[front];
    }
  • 所以就要在front上做一些手脚
public T first() {
        return queue[front % queue.length];
    }
  • dequeue()中引用front的时候也要使用这种操作
public T dequeue() {
        if (count == 0)
            return null;
        else {
            T data = queue[front% queue.length];
            queue[front% queue.length] = null;
            front++;
            count--;
            return data;
        }
    }

其余部分都和的构建方式差不多,这里就不赘述了。

二、循环队列打印杨辉三角

PPT上有关于杨辉三角算法流程的程序框图

  • 首先输入数据0,1,0
triangle.enqueue(0);
triangle.enqueue(1);
triangle.enqueue(0);
  • 将队列前面的两个数字相加并放到队列末尾并弹出首位
s = (Integer) triangle.first();
triangle.dequeue();
e = s + (Integer) triangle.first();
System.out.print(e + "\t");
triangle.enqueue(e);
  • 通过一个for循环可以根据条件打印出杨辉三角形的一行
for (int i = 0; i < j; i++) {}
triangle.enqueue(0);
  • 最后再使用一个for循环循环出阶数就可以实现杨辉三角形的打印了。可以在前面叫上Scanner来让用户决定输出的行数。
public class PascalTriangle {
    public static void main(String[] args) {
        CircularArrayQueue triangle = new CircularArrayQueue();
        Scanner scan = new Scanner(System.in);
        System.out.print("输入杨辉三角形的阶数:");
        int h = scan.nextInt();
        Integer s;
        Integer e;
        triangle.enqueue(0);
        triangle.enqueue(1);
        triangle.enqueue(0);
        System.out.println("1");
        for (int j = 2; j <= h; j ++) {
            for (int i = 0; i < j; i++) {
                s = (Integer) triangle.first();
                triangle.dequeue();
                e = s + (Integer) triangle.first();
                System.out.print(e + "\t");
                triangle.enqueue(e);
            }
            triangle.enqueue(0);
            System.out.println();
        }
    }
}

三、单步跟踪排队情况,画出队列变化图

断点设置

  • 将断点放在数据增加和减少的地方可以观察队列变化的情况

单步跟踪

  • 初始值为0,1,0

循环以下步骤

  • 弹出队列头部

  • 求和并添加到队列尾

统计到Excel表格

posted @ 2017-10-22 18:37  20162302  阅读(195)  评论(0编辑  收藏  举报