精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

兩個棧實現一個隊列方法

麥辣雞腿堡 ? 來源:盼盼編程 ? 作者:晨夢思雨 ? 2023-10-08 15:54 ? 次閱讀

棧和隊列是比較基礎的數據結構。無論在工作中,還是在面試中,棧和隊列都用的比較多。在計算機的世界,你會看到隊列和棧,無處不在。

棧:一個先進后出的數據結構

隊列:一個先進先出的數據結構

棧和隊列這兩種數據結構,同時也存在某種聯系。用棧可以實現隊列,用隊列也可以實現棧。

兩個棧實現一個隊列

思路:讓數據入stack1,然后棧stack1中的數據出棧并入到棧stack2,然后出stack2。

代碼如下:

type CQueue struct {
    stack1, stack2 *list.List
}

//構造函數    
func Constructor() CQueue {
        return CQueue{
        stack1: list.New(),
        stack2: list.New(),
    }
}
    
//尾部插入
func (this *CQueue) AppendTail(value int)  {
    this.stack1.PushBack(value)
}

//頭部刪除,back函數返回其list最尾部的值
func (this *CQueue) DeleteHead() int {
    //如果第二個棧為空
    if this.stack2.Len() == 0 {
        for this.stack1.Len() > 0 {
            this.stack2.PushBack(this.stack1.Remove(this.stack1.Back()))
        }
    }
    if this.stack2.Len() != 0 {
        e := this.stack2.Back()
        this.stack2.Remove(e)
        return e.Value.(int)
    }
    return -1
}

先調用 AppendTail 函數將所有元素插入 stack1,在調用 DeleteHead 函數將 stack1 中的元素轉移到 stack2 中,再將元素再出棧。

再調用 DeleteHead 時,先判斷 statck2 是否為空,為空則將 stack1 元素移動到 stack2 中,然后將 stack2 中的棧頂元素保存,并彈棧。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    6890

    瀏覽量

    88826
  • 函數
    +關注

    關注

    3

    文章

    4304

    瀏覽量

    62429
  • 隊列
    +關注

    關注

    1

    文章

    46

    瀏覽量

    10889
收藏 人收藏

    評論

    相關推薦

    隊列與出隊列分別于兩個不同的VI如何進行數據傳輸?

    如題,入隊列與出隊列分別于兩個不同的VI如何進行數據傳輸?下圖是入隊列的情況,選擇【生產】,循環次,入了
    發表于 02-28 16:40

    隊列

    隊列:1、隊列定義:限定僅只能在表尾端進行插入和刪除的線性表。頂:表尾端被稱之為頂。
    發表于 08-13 13:50 ?0次下載

    你還會手寫隊列隊列的基本實現程序說明

    昨天跟CSDN上的朋友聊天,他說現在如果讓他自己手寫或者隊列,估計都要寫蠻久的,平時雖
    的頭像 發表于 11-11 11:34 ?2780次閱讀

    兩個接觸器如何實現順序啟動

    今天小編給大家分享電路,兩個電機順序啟動電路,這張圖是實物接線,我們可以看到兩個接觸器,一個時間繼電器,
    的頭像 發表于 05-14 17:10 ?7613次閱讀

    兩個接觸器如何實現順序啟動

    兩個接觸器實現控制電動機或電器有很多種方法;可以用種SA轉換開關去分別控制幾個KA繼電器,再由繼電器與接觸器相互控制來完成任務。不過這種控制方法
    的頭像 發表于 02-12 02:38 ?7293次閱讀
    <b class='flag-5'>兩個</b>接觸器如何<b class='flag-5'>實現</b>順序啟動

    深入淺出了解單調和單調隊列

    內單調遞增或單調遞減的內元素是有序的,單調隊列同樣也是。 下面我們通過幾個題目由淺入深,
    的頭像 發表于 02-02 10:18 ?1441次閱讀
    深入淺出了解單調<b class='flag-5'>棧</b>和單調<b class='flag-5'>隊列</b>

    兩個S7-200-PLC之間Modbus通訊實現(從站)

    兩個S7-200-PLC之間Modbus通訊實現(從站)方法。
    發表于 04-25 11:24 ?28次下載

    隊列實現原理是什么?隊列實現方案有哪幾種?

    種后進先出的數據結構,而隊列種先進先出的數據結構,者原理不難理解,使用也簡單。
    的頭像 發表于 07-04 13:28 ?2709次閱讀
    <b class='flag-5'>隊列</b><b class='flag-5'>實現</b><b class='flag-5'>棧</b>原理是什么?<b class='flag-5'>隊列</b><b class='flag-5'>實現</b><b class='flag-5'>棧</b>方案有哪幾種?

    TencentOS-tiny中環形隊列實現

    1. 什么是隊列隊列(queue)是種只能在端插入元素、在另端刪除元素的數據結構,遵循「先入先出」(FIFO)的規則。 隊列中有
    的頭像 發表于 10-08 16:30 ?1364次閱讀

    簡述Labview使用隊列的區別

    簡述Labview使用隊列的區別
    發表于 01-19 09:50 ?9次下載

    寬帶如何裝兩個路由器

    二級路由器、路由器改當交換機、無線橋接這三種,今天我們就來看下前面實現寬帶裝兩個路由器的設置?
    發表于 07-29 16:59 ?7.1w次閱讀

    兩個LED和兩個按鈕的使用

    電子發燒友網站提供《兩個LED和兩個按鈕的使用.zip》資料免費下載
    發表于 01-30 16:04 ?1次下載
    <b class='flag-5'>兩個</b>LED和<b class='flag-5'>兩個</b>按鈕的使用

    stm32單片機如何實現按鍵切換兩個程序?

    stm32單片機如何實現按鍵切換兩個程序? 作為款功能強大的微控制器,STM32單片機可以支持多種應用場景,其中
    的頭像 發表于 09-14 14:22 ?5960次閱讀

    隊列實現兩種方法

    兩個隊列實現 思路:兩個
    的頭像 發表于 10-08 16:01 ?623次閱讀

    兩個硬盤2系統開機切換

    準備、系統安裝、系統切換和注意事項。 、硬件準備 在開始之前,我們首先要確保我們有兩個可用的硬盤,每個硬盤上都可以安裝操作系統。我們建議使用
    的頭像 發表于 11-28 15:08 ?7408次閱讀