鏈表實現隊列的其餘操做至關簡單,它們相似於棧的相應操做。只要返回一個指向隊列前端元素的引用便可實現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 |