<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 分析 帶有尾指針的鏈表 ![](https://box.kancloud.cn/b5f9d5e48eb2f32b1d9d43dbb5789ab5_1216x372.png) 改進下 從head端刪除元素,從tail端插入元素 這邊不用虛擬頭節點 由于沒有dummyHead,要注意鏈表為空的情況 # 代碼 ## 接口 ~~~ public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront(); } ~~~ ## 實現類 ~~~ public class LinkedListQueue<E> implements Queue<E> { private class Node { public E e; public Node next; public Node(E e, Node next) { this.e = e; this.next = next; } public Node(E e) { this(e, null); } public Node() { this(null, null); } @Override public String toString() { return e.toString(); } } //頭節點和尾節點 private Node head, tail; private int size; public LinkedListQueue() { head = null; tail = null; size = 0; } @Override public int getSize() { return size; } @Override public boolean isEmpty() { return size == 0; } //入隊 @Override public void enqueue(E e) { //是空,表示整個是空 if (tail == null) { //直接插入 tail = new Node(e); head = tail; } else { //從tail端插入元素 tail.next = new Node(e); //插入后的元素就在tail的后面 tail = tail.next; } //維護下size size++; } //出隊操作 @Override public E dequeue() { if (isEmpty()) { //如果是空的隊列就不能出隊 throw new IllegalArgumentException("Cannot dequeue from an empty queue."); } //出隊從頭部出,這個元素就是出隊的元素 Node retNode = head; //把頭指針指向出隊元素的下一個,但是要注意指向null的情況 head = head.next; retNode.next = null; //當這個頭指針指向null,表示隊列是空 if (head == null) { tail = null; } //維護下size size--; return retNode.e; } @Override public E getFront() { if (isEmpty()) { //如果是空的隊列就不能出隊 throw new IllegalArgumentException("Queue is empty."); } return head.e; } @Override public String toString() { StringBuilder res = new StringBuilder(); res.append("Queue: front "); Node cur = head; while (cur != null) { res.append(cur + "->"); cur = cur.next; } res.append("NULL tail"); return res.toString(); } public static void main(String[] args) { LinkedListQueue<Integer> queue = new LinkedListQueue<Integer>(); for (int i=0; i<10; i++) { queue.enqueue(i); System.out.println(queue); if (i%3 == 2) { queue.dequeue(); System.out.println(queue); } } } } ~~~ ## 測試 ~~~ public static void main(String[] args) { LinkedListQueue<Integer> queue = new LinkedListQueue<Integer>(); for (int i=0; i<10; i++) { queue.enqueue(i); System.out.println(queue); if (i%3 == 2) { queue.dequeue(); System.out.println(queue); } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看