国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、隊(duì)列介紹

?? 隊(duì)列(Queue)是一種特殊的線性表,只能在頭尾兩端進(jìn)行操作
?? 隊(duì)尾(rear):只能從隊(duì)尾添加元素,一般叫做 enQueue,入隊(duì)
?? 隊(duì)頭(front):只能從隊(duì)頭移除元素,一般叫做 deQueue出隊(duì)
?? 先進(jìn)先出的原則,First In First Out,FIFO

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

二、使用 LinkedList 實(shí)現(xiàn)隊(duì)列

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

/**
 * 利用動(dòng)態(tài)數(shù)組實(shí)現(xiàn)棧
 */
public class Queue<E> {
    // 通過【組合】的方式使用 LinkedList
    private final List<E> list = new LinkedList<>();

    /**
     * 獲取隊(duì)列中的元素個(gè)數(shù)
     */
    public int size() {
        return list.size();
    }

    /**
     * 判斷隊(duì)列中是否一個(gè)元素都沒有(判斷是否是一個(gè)空隊(duì)列)
     */
    public boolean isEmpty() {
        return list.isEmpty();
    }

    /**
     * 往隊(duì)列中添加元素(入隊(duì))
     */
    public void enQueue(E element) {
        list.add(0, element);
    }

    /**
     * 取出隊(duì)首元素, 并刪之(出隊(duì))
     *
     * @return 隊(duì)首元素
     */
    public E deQueue() {
        return list.remove(size() - 1);
    }

    /**
     * 獲取隊(duì)列的頭元素
     */
    public E front() {
        return list.get(size() - 1);
    }

    /**
     * 清空隊(duì)列
     */
    public void clear() {
        list.clear();
    }

}

?? 隊(duì)列內(nèi)部的實(shí)現(xiàn)可以直接利用動(dòng)態(tài)數(shù)組和鏈表
?? 優(yōu)先使用雙向鏈表。① 隊(duì)列主要是往頭尾兩端操作元素;② 雙向鏈表由于有頭指針 first 和尾指針 last 的存在,在頭尾進(jìn)行元素操作都是 O(1) 的復(fù)雜度

三、LeetCode:用【?!繉?shí)現(xiàn)隊(duì)列

https://leetcode.cn/problems/implement-queue-using-stacks/

(1) 老師講之前我自己的實(shí)現(xiàn)(Correct)

?? 代碼是正確的,通過了 LeetCode 的檢查

public class MyQueue {
    private Stack<Integer> stackLeft = new Stack<>(); // 左棧
    private Stack<Integer> stackRight = new Stack<>(); // 右棧

    /**
     * 構(gòu)造方法
     */
    public MyQueue() {

    }

    /**
     * 入隊(duì)
     */
    public void push(int x) {
        stackLeft.push(x);
    }

    /**
     * 出隊(duì)
     */
    public int pop() {
        // 先把【左?!康脑厝砍鰲2⑷霔5健居覘!恐?/span>
        while (!stackLeft.isEmpty()) {
            stackRight.push(stackLeft.pop());
        }

        Integer elem = stackRight.pop();

        // 把【右棧】元素放入【左?!?/span>
        while (!stackRight.isEmpty()) {
            stackLeft.push(stackRight.pop());
        }

        return elem;
    }

    /**
     * 返回隊(duì)首元素
     */
    public int peek() {
        // 先把【左棧】的元素全部出棧并入棧到【右?!恐?/span>
        while (!stackLeft.isEmpty()) {
            stackRight.push(stackLeft.pop());
        }

        Integer elem = stackRight.peek();

        // 把【右棧】元素放入【左?!?/span>
        while (!stackRight.isEmpty()) {
            stackLeft.push(stackRight.pop());
        }

        return elem;
    }

    public boolean empty() {
        return stackLeft.isEmpty();
    }

}

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */

(2) 實(shí)現(xiàn)思路

?? 準(zhǔn)備 2 個(gè)棧:inStackoutStack
??入隊(duì)時(shí),把元素 pushinStack
??出隊(duì)時(shí)
??如果 outStack 為空,① 將 inStack 所有元素逐一彈出,pushoutStack;② outStack 彈出棧頂元素
??如果 outStack 不為空, outStack 彈出棧頂元素

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

(3) 代碼實(shí)現(xiàn)

public class MyQueue {
    // 入隊(duì)時(shí), 往 inStack 插入元素
    private Stack<Integer> inStack = new Stack<>();
    private Stack<Integer> outStack = new Stack<>();

    /**
     * 構(gòu)造方法
     */
    public MyQueue() {

    }

    /**
     * 入隊(duì)(只要是入隊(duì), 就往 inStack 插入元素)
     */
    public void push(int x) {
        inStack.push(x);
    }

    /**
     * 出隊(duì)
     */
    public int pop() {
        if (outStack.isEmpty()) { // 如果 outStack 為空
            // 將 inStack 所有元素逐一彈出, push 到 outStack 中
            while (!inStack.isEmpty()) {
                outStack.push(inStack.pop());
            }
        }

        return outStack.pop();
    }

    /**
     * 返回隊(duì)首元素
     */
    public int peek() {
        if (outStack.isEmpty()) { // 如果 outStack 為空
            // 將 inStack 所有元素逐一彈出, push 到 outStack 中
            while (!inStack.isEmpty()) {
                outStack.push(inStack.pop());
            }
        }

        return outStack.peek();
    }

    public boolean empty() {
        return inStack.isEmpty() && outStack.isEmpty();
    }

}

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */

四、jdk 的 Queue

?? offer():入隊(duì)
?? poll():出隊(duì)
?? peek():返回隊(duì)頭元素

?? jdk 的 Queue 底層也是 LinkedList

五、雙端隊(duì)列(Deque)

?? 雙端隊(duì)列是能在頭尾兩端添加、刪除的隊(duì)列
?? 英文 dequedouble ended queue 的簡(jiǎn)稱
【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

☆ 隊(duì)尾是鏈表的末尾
☆ 隊(duì)頭是鏈表的第一個(gè)元素

/**
 * 雙端隊(duì)列
 */
public class Deque<E> {
    private final List<E> linkedList;

    public Deque() {
        this.linkedList = new LinkedList<>();
    }

    public int size() {
        return linkedList.size();
    }

    public boolean isEmpty() {
        return linkedList.isEmpty();
    }

    public void clear() {
        linkedList.clear();
    }

    /**
     * 從隊(duì)尾入隊(duì)
     */
    public void enQueueRear(E element) {
        linkedList.add(element);
    }

    /**
     * 從隊(duì)頭入隊(duì)
     */
    public void enQueueFront(E element) {
        linkedList.add(0, element);
    }

    /**
     * 從隊(duì)頭出隊(duì)
     */
    public E deQueueFront() {
        return linkedList.remove(0);
    }

    /**
     * 從隊(duì)尾出隊(duì)
     */
    public E deQueueRear() {
        return linkedList.remove(size() - 1);
    }

    /**
     * 獲取隊(duì)列的頭元素
     */
    public E front() {
        return linkedList.get(0);
    }

    /**
     * 獲取隊(duì)列的【尾】元素
     */
    public E rear() {
        return linkedList.get(size() - 1);
    }

}

六、循環(huán)隊(duì)列

(1) 分析

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

?? 隊(duì)列底層也可以使用動(dòng)態(tài)數(shù)組實(shí)現(xiàn),并且各項(xiàng)接口也可以優(yōu)化到 O(1) 的時(shí)間復(fù)雜度
?? 用數(shù)組實(shí)現(xiàn)并且優(yōu)化之后的隊(duì)列也叫做:循環(huán)隊(duì)列(Circle Queue)

?? 循環(huán)雙端隊(duì)列:可以進(jìn)行兩端添加刪除操作的循環(huán)隊(duì)列

(2) 入隊(duì)

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

  /**
   * 往隊(duì)列中添加元素(入隊(duì))
   */
  public void enQueue(E element) {
      elements[(front + size) % elements.length] = element;
      size++;
  }

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

(3) 出隊(duì)

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

  /**
   * 取出隊(duì)首元素, 并刪之(出隊(duì))
   *
   * @return 隊(duì)首元素
   */
  public E deQueue() {
      E frontElem = elements[front];
      elements[front] = null;
      front = (front + 1) % elements.length;
      size--;
      return frontElem;
  }

(4) 動(dòng)態(tài)擴(kuò)容

【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】,數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)

① 我自己的垃圾實(shí)現(xiàn)

?? 也是能夠滿足要求的,但代碼效率不行 ??

    private void ensureCapacity(int capacity) {
        int oldCapacity = elements.length;
        // 如果所需容量足夠, 則不擴(kuò)容
        if (oldCapacity >= capacity) return;

        // 申請(qǐng)全新的數(shù)組空間(新容量是舊容量的 1.5 倍)
        capacity = oldCapacity + (oldCapacity >> 1);
        E[] newElements = (E[]) new Object[capacity];

        // 把舊數(shù)組中的數(shù)據(jù)復(fù)制到新數(shù)組中
        int index = 0;
        int flagSize = 0;
        E[] oldElements = this.elements;
        while (!this.isEmpty()) {
            E e = this.deQueue();
            flagSize++;
            newElements[index] = e;
            index++;
        }

        // elements 指針指向新數(shù)組
        this.elements = newElements;
        // 隊(duì)頭 front 指向 0
        front = 0;
        size = flagSize;

        System.out.println(oldCapacity + "擴(kuò)容為" + capacity);
    }

② 老師的代碼實(shí)現(xiàn)

 private void ensureCapacity(int capacity) {
     int oldCapacity = elements.length;
     // 如果所需容量足夠, 則不擴(kuò)容
     if (oldCapacity >= capacity) return;

     // 申請(qǐng)全新的數(shù)組空間(新容量是舊容量的 1.5 倍)
     capacity = oldCapacity + (oldCapacity >> 1);
     E[] newElements = (E[]) new Object[capacity];

     for (int i = 0; i < size; i++) {
         newElements[i] = elements[(i + front) % elements.length];
     }

     // elements 指針指向新數(shù)組
     this.elements = newElements;
     // 隊(duì)頭 front 指向 0
     front = 0;

     System.out.println(oldCapacity + "擴(kuò)容為" + capacity);
 }

(5) 索引映射封裝

  public int realIndex(int index) {
      return (front + index) % elements.length;
  }

(6) 循環(huán)隊(duì)列完整代碼

/**
 * 循環(huán)隊(duì)列
 */
@SuppressWarnings("all")
public class CircleQueue<E> {

    private int front; // 記錄著隊(duì)頭元素的下標(biāo)
    private int size;
    private E[] elements;

    public static final int DEFAULT_CAPACITY = 10;

    public CircleQueue(int capacity) {
        capacity = (capacity > DEFAULT_CAPACITY) ? capacity : DEFAULT_CAPACITY;
        elements = (E[]) new Object[capacity];
    }

    public CircleQueue() {
        this(DEFAULT_CAPACITY);
    }

    /**
     * 獲取隊(duì)列中的元素個(gè)數(shù)
     */
    public int size() {
        return size;
    }

    /**
     * 判斷隊(duì)列中是否一個(gè)元素都沒有(判斷是否是一個(gè)空隊(duì)列)
     */
    public boolean isEmpty() {
        return size == 0;
    }

    /**
     * 獲取隊(duì)列的頭元素
     */
    public E front() {
        return elements[front];
    }

    /**
     * 往隊(duì)列中添加元素(入隊(duì))
     */
    public void enQueue(E element) {
        // 擴(kuò)容檢測(cè)
        ensureCapacity(size + 1);

        elements[realIndex(size)] = element;
        size++;
    }

    /**
     * 我自己的垃圾實(shí)現(xiàn)
     */
//    private void ensureCapacity(int capacity) {
//        int oldCapacity = elements.length;
//        // 如果所需容量足夠, 則不擴(kuò)容
//        if (oldCapacity >= capacity) return;
//
//        // 申請(qǐng)全新的數(shù)組空間(新容量是舊容量的 1.5 倍)
//        capacity = oldCapacity + (oldCapacity >> 1);
//        E[] newElements = (E[]) new Object[capacity];
//
//        // 把舊數(shù)組中的數(shù)據(jù)復(fù)制到新數(shù)組中
//        int index = 0;
//        int flagSize = 0;
//        E[] oldElements = this.elements;
//        while (!this.isEmpty()) {
//            E e = this.deQueue();
//            flagSize++;
//            newElements[index] = e;
//            index++;
//        }
//
//        // elements 指針指向新數(shù)組
//        this.elements = newElements;
//        // 隊(duì)頭 front 指向 0
//        front = 0;
//        size = flagSize;
//
//        System.out.println(oldCapacity + "擴(kuò)容為: " + capacity);
//    }
    private void ensureCapacity(int capacity) {
        int oldCapacity = elements.length;
        // 如果所需容量足夠, 則不擴(kuò)容
        if (oldCapacity >= capacity) return;

        // 申請(qǐng)全新的數(shù)組空間(新容量是舊容量的 1.5 倍)
        capacity = oldCapacity + (oldCapacity >> 1);
        E[] newElements = (E[]) new Object[capacity];

        for (int i = 0; i < size; i++) {
            newElements[i] = elements[realIndex(i)];
        }

        // elements 指針指向新數(shù)組
        this.elements = newElements;
        // 隊(duì)頭 front 指向 0
        front = 0;

        System.out.println(oldCapacity + "擴(kuò)容為" + capacity);
    }

    private void print(String s, E[] es) {
        System.out.println("s = " + s);
        for (E e : es) {
            System.out.println(e);
        }
        System.out.println("s = " + s);
    }


    /**
     * 取出隊(duì)首元素, 并刪之(出隊(duì))
     *
     * @return 隊(duì)首元素
     */
    public E deQueue() {
        E frontElem = elements[front];
        elements[front] = null;
        front = realIndex(1);
        size--;
        return frontElem;
    }


    /**
     * 清空隊(duì)列
     */
    public void clear() {
        for (E element : elements) {
            element = null;
        }

        size = 0;
        front = 0;
    }

    public int realIndex(int index) {
        return (front + index) % elements.length;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{size=").append(size).
            append(", capacity=").append(elements.length).
            append(", [");

        for (int i = 0; i < elements.length; i++) {
            // 不是第 0 個(gè)元素就拼接【, 】
            if (i != 0) {
                sb.append(", ");
            }

            sb.append(elements[i]);
        }

        sb.append("]}");

        return sb.toString();
    }
}

七、循環(huán)雙端隊(duì)列

?? 用數(shù)組實(shí)現(xiàn)并且優(yōu)化之后的隊(duì)列也叫做:循環(huán)隊(duì)列(Circle Queue)

?? 循環(huán)雙端隊(duì)列不需要存在一個(gè)叫做 rear 的變量來存儲(chǔ)隊(duì)尾元素的下標(biāo)
?? 隊(duì)尾元素的下標(biāo): front + size - 1

略…文章來源地址http://www.zghlxwxcb.cn/news/detail-530566.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(12)[用棧實(shí)現(xiàn)隊(duì)列]

    【LeetCode】數(shù)據(jù)結(jié)構(gòu)題解(12)[用棧實(shí)現(xiàn)隊(duì)列]

    所屬專欄:玩轉(zhuǎn)數(shù)據(jù)結(jié)構(gòu)題型?? ?? 博主首頁:初陽785?? ?? 代碼托管:chuyang785?? ?? 感謝大家的支持,您的點(diǎn)贊和關(guān)注是對(duì)我最大的支持?。?!?? ?? 博主也會(huì)更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文?。?? ?? 關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍?。。。?!

    2024年02月13日
    瀏覽(36)
  • 《數(shù)據(jù)結(jié)構(gòu)初階》用隊(duì)列實(shí)現(xiàn)棧&&用棧實(shí)現(xiàn)隊(duì)列的細(xì)致解析

    《數(shù)據(jù)結(jié)構(gòu)初階》用隊(duì)列實(shí)現(xiàn)棧&&用棧實(shí)現(xiàn)隊(duì)列的細(xì)致解析

    目錄 一、??本章重點(diǎn) 二、??隊(duì)列實(shí)現(xiàn)棧 三、??棧實(shí)現(xiàn)隊(duì)列 四、??解題思路總結(jié) 用兩個(gè)隊(duì)列實(shí)現(xiàn)棧 用兩個(gè)棧實(shí)現(xiàn)隊(duì)列 解題思路總結(jié) ?我們有兩個(gè)隊(duì)列: ?入棧數(shù)據(jù)1、 2、 3 可以將數(shù)據(jù)入隊(duì)列至隊(duì)列一或者隊(duì)列二。 如何出棧? ?但出棧要先出1,怎么辦? 第一步 :

    2023年04月25日
    瀏覽(19)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列篇| 超清晰圖解和詳解:循環(huán)隊(duì)列模擬、用棧實(shí)現(xiàn)隊(duì)列、用隊(duì)列實(shí)現(xiàn)棧

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列篇| 超清晰圖解和詳解:循環(huán)隊(duì)列模擬、用棧實(shí)現(xiàn)隊(duì)列、用隊(duì)列實(shí)現(xiàn)棧

    博主簡(jiǎn)介: 努力學(xué)習(xí)的22級(jí)計(jì)算機(jī)科學(xué)與技術(shù)本科生一枚?? 博主主頁: @是瑤瑤子啦 每日一言??: 每一個(gè)不曾起舞的日子,都是對(duì)生命的辜負(fù)。——尼采 ??622. 設(shè)計(jì)循環(huán)隊(duì)列 ???? 思路: ??數(shù)據(jù)結(jié)構(gòu): 使用數(shù)組為數(shù)據(jù)結(jié)構(gòu),且采用犧牲一個(gè)空間的方法來包裝判空和判滿的

    2024年02月11日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)刷題訓(xùn)練:用棧實(shí)現(xiàn)隊(duì)列(力扣OJ)

    數(shù)據(jù)結(jié)構(gòu)刷題訓(xùn)練:用棧實(shí)現(xiàn)隊(duì)列(力扣OJ)

    目錄 前言 1. 題目:用棧實(shí)現(xiàn)隊(duì)列 2. 思路 3. 分析 ?3.1 定義 “ 隊(duì)列 ” ?3.2 創(chuàng)建隊(duì)列 3.3 入隊(duì) ?3.4 隊(duì)頭數(shù)據(jù) ?3.5 出隊(duì) ?3.6 判空和銷毀 4.題解 總結(jié) ????????棧和隊(duì)列是數(shù)據(jù)結(jié)構(gòu)中的兩個(gè)重要概念,它們?cè)谒惴ê统绦蛟O(shè)計(jì)中都有著廣泛的應(yīng)用。本文將帶你深入了解如何使用

    2024年02月13日
    瀏覽(23)
  • 速學(xué)數(shù)據(jù)結(jié)構(gòu) | 我不允許還有人不會(huì)用棧實(shí)現(xiàn)隊(duì)列!

    速學(xué)數(shù)據(jù)結(jié)構(gòu) | 我不允許還有人不會(huì)用棧實(shí)現(xiàn)隊(duì)列!

    ?? 鴿芷咕 :個(gè)人主頁 ???個(gè)人專欄 :《Linux深造日志》《C++干貨基地》 ??生活的理想,就是為了理想的生活! ?? ?? hello! 各位鐵鐵們大家好啊,不知道大家對(duì)棧和隊(duì)列的學(xué)習(xí)都學(xué)過了吧?那么用棧來實(shí)現(xiàn)隊(duì)列你會(huì)做嘛? ?? ?? 棧和隊(duì)列我們前面說了都是一種特殊

    2024年02月02日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】 隊(duì)列(Queue)與隊(duì)列的模擬實(shí)現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】 隊(duì)列(Queue)與隊(duì)列的模擬實(shí)現(xiàn)

    隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有==先進(jìn)先出FIFO(FirstIn First Out) ==入隊(duì)列: 進(jìn)行插入操作的一端稱為 隊(duì)尾(Tail/Rear) 出隊(duì)列: 進(jìn)行刪除操作的一端稱為 隊(duì)頭(Head/Front) 在Java中, Queue是個(gè)接口,底層是通過鏈表實(shí)現(xiàn)

    2024年02月11日
    瀏覽(15)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解

    1、概念 隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有 先進(jìn)先出 FIFO(First In First Out)。 入隊(duì)列 :進(jìn)行 插入 操作的一端稱為 隊(duì)尾 。 出隊(duì)列 :進(jìn)行 刪除 操作的一端稱為 隊(duì)頭 。 2、結(jié)構(gòu) (1)隊(duì)列的順序存儲(chǔ)結(jié)構(gòu) 入隊(duì) ,不需要

    2024年02月15日
    瀏覽(23)
  • 【Golang】實(shí)現(xiàn)簡(jiǎn)單隊(duì)列(Queue)數(shù)據(jù)結(jié)構(gòu)

    ?在計(jì)算機(jī)科學(xué)中,隊(duì)列是一種特殊的線性數(shù)據(jù)結(jié)構(gòu),它遵循FIFO(先進(jìn)先出)原則。隊(duì)列中的元素只能從一端(稱為隊(duì)尾或后端)添加,并且只能從另一端(稱為隊(duì)頭或前端)移除。這種特性使得隊(duì)列在許多算法和數(shù)據(jù)結(jié)構(gòu)中都有廣泛的應(yīng)用,例如操作系統(tǒng)中的任務(wù)調(diào)度、網(wǎng)

    2024年01月19日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】C++的STL模板(迭代器iterator、容器vector、隊(duì)列queue、集合set、映射map)以及算法例題

    【數(shù)據(jù)結(jié)構(gòu)與算法】C++的STL模板(迭代器iterator、容器vector、隊(duì)列queue、集合set、映射map)以及算法例題

    更多算法例題鏈接: 【數(shù)據(jù)結(jié)構(gòu)與算法】遞推法和遞歸法解題(遞歸遞推算法典型例題) 什么是迭代器(iterator) 迭代器(iterator)的定義: 迭代器是一種檢查容器內(nèi)元素并遍歷元素的數(shù)據(jù)類型。 迭代器提供對(duì)一個(gè)容器中的對(duì)象的訪問方法,并且定義了容器中對(duì)象的范圍。 容器

    2024年04月14日
    瀏覽(31)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列-Queue

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列-Queue

    ? 作者:小胡_不糊涂 ?? 作者主頁:小胡_不糊涂的個(gè)人主頁 ?? 收錄專欄:淺談數(shù)據(jù)結(jié)構(gòu) ?? 持續(xù)更文,關(guān)注博主少走彎路,謝謝大家支持 ?? 隊(duì)列: 只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(FirstIn First Out) 入隊(duì)列:

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包