国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

Android編程精選 ? 來源:編程學習總站 ? 作者:寫代碼的牛頓 ? 2021-07-04 13:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、隊列實現棧原理簡述

棧是一種后進先出的數據結構,而隊列是一種先進先出的數據結構,兩者原理不難理解,使用也簡單。但是我們不僅僅要掌握數據結構的基本原理,還要學會靈活運用,能否靈活運用是考察一個人對數據結構的理解程度,也是在面試的時候經常會考到的知識點。現在假設面試官要求你用隊列實現棧,你的解決方案是什么?通過棧的基本原理我們知道,只要每次進行stack_pop操作時將隊列里最后一個元素輸出就能模擬棧的輸出操作。

2、隊列實現棧方案和實現

方案1:

我們很容易想到一種解決方案,隊列queue1保存原始輸入數據,隊列queue2作為臨時隊列緩存數據,只要進行stack_pop操作時,先將queue1里除最后一個元素外全部出隊,且出隊的數據保存在一個臨時隊列queue2里,保存queue1最后的元素,最后再將queue2里的全部元素出隊,且出隊的元素重新放進queue1里,返回保存的queue1最后的元素。

我們作了下圖便于理解2個隊列模擬棧的過程。

一個棧輸出元素順序

pYYBAGDhSEyAdw4iAAASk34tfNs779.jpg

兩個隊列queue1和queue2模擬棧

poYBAGDhSFSAD2xuAABApH0Njto619.jpg

在數據結構與算法篇-隊列和數據結構與算法篇-棧文章里我們詳細介紹了隊列和棧的原理,并都用C實現了隊列和棧。現在我們復用這兩篇文章里隊列的實現代碼,用于實現棧。定義棧相關數據結構和操作函數代碼如下:

poYBAGDhSF6AElBAAAB5DbpRGCo582.jpg

棧初始化函數實現:

poYBAGDhSGuATGupAABDbwkUz54998.jpg

棧銷毀函數實現:

pYYBAGDhSHeACJ0jAAA5-j_6l6c146.jpg

入棧函數實現:

poYBAGDhSICAXrdRAAAxX-RjUj8740.jpg

出棧函數實現:

pYYBAGDhSIqASGSQAAB8F1Mp3es586.jpg

判斷棧是否空和是否滿函數實現:

poYBAGDhSJyAIFsaAABW1UkhDxU770.jpg

從方案1我們知道每次出隊都需要將隊列里除最后一個元素外的元素保存在另外一個臨時隊列里,增加了空間復雜度。那么能否只用一個隊列能否模擬棧呢?通過仔細觀察方案1發現queue1出對的數據是可以重新再入隊的,只要讓隊列里最后一個元素在隊列頭即可,那么我們很容易想到方案2。 方案2: 將隊列queue1里的數據依次出隊,且出隊的數據重新放在queue1的隊尾,直到最后一個元素在隊列頭,最后輸出隊列頭的元素即可。整個過程我們可以用下圖表示。單個隊列模擬棧

poYBAGDhSKaAeLi6AAA3CEypaKE570.jpg

單個隊列模擬出棧函數實現如下:

pYYBAGDhSLCAVo4rAABl3JgrwOM365.jpg

棧實現驗證

下面我們寫一個小程序驗棧實現的正確性。

poYBAGDhSLqAf1UWAADbnrJOENY998.jpg

編譯運行輸出如下:

pYYBAGDhSMSAJ1tIAAAysSP7yQc495.jpg

隊列模擬棧完全正確。

責任編輯:lq6

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

    關注

    23

    文章

    4780

    瀏覽量

    97864
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    41528
  • 元素
    +關注

    關注

    0

    文章

    47

    瀏覽量

    8746

原文標題:數據結構與算法篇-隊列實現棧

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RDMA設計25:隊列管理模塊之發送模塊詳細設計分析

    發送隊列存儲為所有發送隊列共用的存儲空間,根據用戶環境和開發板環境不同可由 BRAM、URAM 或 LUTRAM 實現。發送隊列管理單元則負責管理這個存儲空間,并處理用戶指令和發送
    的頭像 發表于 01-25 16:27 ?3132次閱讀
    RDMA設計25:<b class='flag-5'>隊列</b>管理模塊之發送模塊詳細設計分析

    RDMA設計26:隊列管理模塊設計之接收隊列模塊詳細分析

    本文主要交流設計思路,在本博客已給出相關博文100多篇,希望對初學者有用。注意這里只是拋磚引玉,切莫認為參考這就可以完成商用IP設計。 (2)接收隊列 接收隊列由一個接收隊列管理單元組成。與發送
    發表于 01-22 09:03

    RDMA設計24:隊列管理模塊設計

    隊列管理模塊采用管理與存儲分離的結構進行設計,由發送隊列存儲、發送隊列管理、接收隊列管理、完成條目解析、異常完成條目處理和 Round-Robin 仲裁組成。
    的頭像 發表于 01-20 11:45 ?1187次閱讀
    RDMA設計24:<b class='flag-5'>隊列</b>管理模塊設計

    請問單片機開發的程序設計語言主要有哪幾種

    單片機開發的程序設計語言主要有哪幾種
    發表于 01-14 08:29

    RDMA設計17:隊列管理模塊設計2

    。 (2)接收隊列 接收隊列由一個接收隊列管理單元組成。與發送隊列類似的是,接收隊列管理單元也由若干表單構成,其中包括 RQ1 表單和用戶
    發表于 01-04 14:54

    RDMA設計12:融合以太網協議設計1

    RDMA 隊列實現 RDMA 指令提交與完成機制。在 RoCE v2 高速數據傳輸系統中,用戶通過配置系統控制模塊中的寄存器或寄存器組來實現隊列管理和數據 DMA 請求。融合以太網
    發表于 12-25 11:39

    優先級隊列介紹

    隊列(Queue)的知識點:「概念」:隊列是一種先進先出(FIFO)的數據結構,類似于排隊的概念。「基本操作」:enqueue(item): 將元素添加到隊列的末尾。dequeue(): 從
    發表于 11-26 07:56

    基于環形隊列的UART收發回顯實驗

    問題。在本實驗中,我們使用環形隊列實現實驗1的串口收發回顯,將串口接收到的數據暫存在隊列中,待完成一次接收后再將隊列中的數據全部發出去。
    的頭像 發表于 10-27 13:51 ?1951次閱讀
    基于環形<b class='flag-5'>隊列</b>的UART收發回顯實驗

    自動駕駛中常提的“全”是個啥?必要“全”嗎?

    [首發于智駕最前沿微信公眾號]隨著自動駕駛技術落地,越來越多車企公布了自己的自動駕駛方案,在很多車企的宣傳中,會使用“全自研”的說法來證明自己的實力。所謂“全”,字面意思是全套技術
    的頭像 發表于 08-27 09:43 ?956次閱讀
    自動駕駛中常提的“全<b class='flag-5'>棧</b>”是個啥?<b class='flag-5'>有</b>必要“全<b class='flag-5'>棧</b>”嗎?

    RabbitMQ消息隊列解決方案

    在現代分布式系統架構中,消息隊列作為核心組件,承擔著系統解耦、異步處理、流量削峰等重要職責。RabbitMQ作為一款成熟的消息隊列中間件,以其高可用性、高可靠性和豐富的特性,成為眾多企業的首選方案。本文將從運維工程師的角度,詳細
    的頭像 發表于 07-08 15:55 ?590次閱讀

    NVME控制器之隊列管理模塊

    如圖1所示。 圖1 隊列管理模塊框圖 在NVMe協議中,使用隊列來傳輸、緩存和處理命令條目,以實現Host端和NVMe SSD端之間的通信。在CPU上運行NVMe軟件協議,其Ho
    發表于 05-03 20:19

    NVME控制器之隊列管理模塊

    隊列管理模塊是整個NVMe Host控制器的核心模塊,該模塊實現了提交隊列與完成隊列的管理,多隊列請求的仲裁判決等功能。
    的頭像 發表于 05-03 15:32 ?606次閱讀
    NVME控制器之<b class='flag-5'>隊列</b>管理模塊

    深入淺出解析低功耗藍牙協議

    協議的實現代碼稱為協議(protocol stack),Bluetooth LE協議就是實現低功耗藍牙協議的代碼,理解和掌握Bluetooth LE協議是
    的頭像 發表于 04-09 14:49 ?1256次閱讀
    深入淺出解析低功耗藍牙協議<b class='flag-5'>棧</b>

    三種藍牙架構實現方案(藍牙協議方案

    藍牙架構實現方案哪幾種?我們一般把整個藍牙實現方案叫做藍牙協議
    的頭像 發表于 04-08 15:35 ?1494次閱讀
    三種藍牙架構<b class='flag-5'>實現</b><b class='flag-5'>方案</b>(藍牙協議<b class='flag-5'>棧</b><b class='flag-5'>方案</b>)

    分布式存儲哪幾種類型?

    分布式存儲哪幾種類型?分布式存儲系統是一種將數據分散存儲在多臺獨立節點上的技術,根據數據模型可分為鍵值存儲、列式存儲、文檔存儲和圖形存儲等類型;按數據存儲單位可分為基于文件、塊和對象的存儲;按
    的頭像 發表于 02-20 11:00 ?1480次閱讀