本周学习了课本第五章的内容,主要介绍了一种新的线性集合——队列。讲解了关于队列的相关概念以及使用链表和数组实现队列的方法。html
由于队列的后四种操做的实现都比较简单,和以前栈的相关相似操做比较相似。主要的不一样体如今enqueue和dequeue上,由于栈只需在集合的一端操做,而队列须要在两端实现,因此接下来的内容主要在enqueue和dequeue两种方法上进行讨论。前端
public void enqueue(T element) { LinearNode<T> node = new LinearNode<T>(element); if (isEmpty()) { head = node; } else { tail.setNext(node); } tail = node; count++; }
public T dequeue() throws EmptyCollectionException { if (isEmpty()) { throw new EmptyCollectionException("queue"); } T result = head.getElement(); head = head.getNext(); count--; if (isEmpty()) { tail = null; } return result; }
public void enqueue(T element) { if (size() == queue.length) { expandCapacity(); } queue[rear] = element; rear = (rear + 1) % queue.length;//关键代码:用于正确更新rear的值 count++; }
public T dequeue() throws EmptyCollectionException { if (isEmpty()) { throw new EmptyCollectionException("queue"); } T result = queue[front]; queue[rear] = null; front = (front + 1) % queue.length; count--; return result; }
上周没有课堂测试。java
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 10/10 | 1/1 | 10/10 | |
第二周 | 246/366 | 2/3 | 20/30 | |
第三周 | 567/903 | 1/4 | 10/40 |