链表实现队列的其余操做至关简单,它们相似于栈的相应操做。只要返回一个指向队列前端元素的引用便可实现first操做。当元素数目为0时isEmpty操做返回true,不然返回falseosize操做只要返回队列中的元素数目便可。html
这周内容和上周差很少 在队列的理解和实现没遇到什么困难,具体的问题也只有双向队列的实现问题,解决方案已在下文给出前端
public void addFirst(Item item) { if (item == null) throw new NullPointerException("can't add null element!"); Node first = new Node(); first.item = item; first.prev = nil; first.next = nil.next; nil.next.prev = first; nil.next = first; n++; } public void addLast(Item item) { if (item == null) throw new NullPointerException("can't add null element!"); Node last = new Node(); last.item = item; last.next = nil; last.prev = nil.prev; nil.prev.next = last; nil.prev = last; n++; } public Item removeFirst() { if (isEmpty()) throw new NoSuchElementException("Can't remove from empty deque"); Node del = nil.next; Item item = del.item; del.next.prev = nil; nil.next = del.next; n--; return item; } public Item removeLast() { if (isEmpty()) throw new NoSuchElementException("Stack underflow"); Node del = nil.prev; Item item = del.item; del.prev.next = nil; nil.prev = del.prev; n--; return item; }
上周没有进行测试,因此没有错题总结git
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 8/8 | |
第二周 | 500/500 | 1/2 | 15/ 23 | |
第五周 | 802/1302 | 1/3 | 12/35 |