本週學習了課本第五章的內容,主要介紹了一種新的線性集合——隊列。講解了關於隊列的相關概念以及使用鏈表和數組實現隊列的方法。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 |