chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

隊(duì)列實(shí)現(xiàn)棧原理是什么?隊(duì)列實(shí)現(xiàn)棧方案有哪幾種?

Android編程精選 ? 來(lái)源:編程學(xué)習(xí)總站 ? 作者:寫(xiě)代碼的牛頓 ? 2021-07-04 13:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、隊(duì)列實(shí)現(xiàn)棧原理簡(jiǎn)述

棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),而隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),兩者原理不難理解,使用也簡(jiǎn)單。但是我們不僅僅要掌握數(shù)據(jù)結(jié)構(gòu)的基本原理,還要學(xué)會(huì)靈活運(yùn)用,能否靈活運(yùn)用是考察一個(gè)人對(duì)數(shù)據(jù)結(jié)構(gòu)的理解程度,也是在面試的時(shí)候經(jīng)常會(huì)考到的知識(shí)點(diǎn)?,F(xiàn)在假設(shè)面試官要求你用隊(duì)列實(shí)現(xiàn)棧,你的解決方案是什么?通過(guò)棧的基本原理我們知道,只要每次進(jìn)行stack_pop操作時(shí)將隊(duì)列里最后一個(gè)元素輸出就能模擬棧的輸出操作。

2、隊(duì)列實(shí)現(xiàn)棧方案和實(shí)現(xiàn)

方案1:

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

我們作了下圖便于理解2個(gè)隊(duì)列模擬棧的過(guò)程。

一個(gè)棧輸出元素順序

pYYBAGDhSEyAdw4iAAASk34tfNs779.jpg

兩個(gè)隊(duì)列queue1和queue2模擬棧

poYBAGDhSFSAD2xuAABApH0Njto619.jpg

在數(shù)據(jù)結(jié)構(gòu)與算法篇-隊(duì)列和數(shù)據(jù)結(jié)構(gòu)與算法篇-棧文章里我們?cè)敿?xì)介紹了隊(duì)列和棧的原理,并都用C實(shí)現(xiàn)了隊(duì)列和?!,F(xiàn)在我們復(fù)用這兩篇文章里隊(duì)列的實(shí)現(xiàn)代碼,用于實(shí)現(xiàn)棧。定義棧相關(guān)數(shù)據(jù)結(jié)構(gòu)和操作函數(shù)代碼如下:

poYBAGDhSF6AElBAAAB5DbpRGCo582.jpg

棧初始化函數(shù)實(shí)現(xiàn):

poYBAGDhSGuATGupAABDbwkUz54998.jpg

棧銷(xiāo)毀函數(shù)實(shí)現(xiàn):

pYYBAGDhSHeACJ0jAAA5-j_6l6c146.jpg

入棧函數(shù)實(shí)現(xiàn):

poYBAGDhSICAXrdRAAAxX-RjUj8740.jpg

出棧函數(shù)實(shí)現(xiàn):

pYYBAGDhSIqASGSQAAB8F1Mp3es586.jpg

判斷棧是否空和是否滿函數(shù)實(shí)現(xiàn):

poYBAGDhSJyAIFsaAABW1UkhDxU770.jpg

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

poYBAGDhSKaAeLi6AAA3CEypaKE570.jpg

單個(gè)隊(duì)列模擬出棧函數(shù)實(shí)現(xiàn)如下:

pYYBAGDhSLCAVo4rAABl3JgrwOM365.jpg

棧實(shí)現(xiàn)驗(yàn)證

下面我們寫(xiě)一個(gè)小程序驗(yàn)棧實(shí)現(xiàn)的正確性。

poYBAGDhSLqAf1UWAADbnrJOENY998.jpg

編譯運(yùn)行輸出如下:

pYYBAGDhSMSAJ1tIAAAysSP7yQc495.jpg

隊(duì)列模擬棧完全正確。

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4759

    瀏覽量

    97111
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    41343
  • 元素
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    8722

原文標(biāo)題:數(shù)據(jù)結(jié)構(gòu)與算法篇-隊(duì)列實(shí)現(xiàn)棧

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    優(yōu)先級(jí)隊(duì)列介紹

    隊(duì)列(Queue)的知識(shí)點(diǎn):「概念」:隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),類(lèi)似于排隊(duì)的概念?!富静僮鳌梗篹nqueue(item): 將元素添加到隊(duì)列的末尾。dequeue(): 從隊(duì)
    發(fā)表于 11-26 07:56

    基于環(huán)形隊(duì)列的UART收發(fā)回顯實(shí)驗(yàn)

    問(wèn)題。在本實(shí)驗(yàn)中,我們使用環(huán)形隊(duì)列來(lái)實(shí)現(xiàn)實(shí)驗(yàn)1的串口收發(fā)回顯,將串口接收到的數(shù)據(jù)暫存在隊(duì)列中,待完成一次接收后再將隊(duì)列中的數(shù)據(jù)全部發(fā)出去。
    的頭像 發(fā)表于 10-27 13:51 ?1672次閱讀
    基于環(huán)形<b class='flag-5'>隊(duì)列</b>的UART收發(fā)回顯實(shí)驗(yàn)

    自動(dòng)駕駛中常提的“全”是個(gè)啥?必要“全”嗎?

    [首發(fā)于智駕最前沿微信公眾號(hào)]隨著自動(dòng)駕駛技術(shù)落地,越來(lái)越多車(chē)企公布了自己的自動(dòng)駕駛方案,在很多車(chē)企的宣傳中,會(huì)使用“全自研”的說(shuō)法來(lái)證明自己的實(shí)力。所謂“全”,字面意思是全套技術(shù)
    的頭像 發(fā)表于 08-27 09:43 ?652次閱讀
    自動(dòng)駕駛中常提的“全<b class='flag-5'>棧</b>”是個(gè)啥?<b class='flag-5'>有</b>必要“全<b class='flag-5'>棧</b>”嗎?

    NVMe IP高速傳輸卻不依賴(lài)XDMA設(shè)計(jì)之九:隊(duì)列管理模塊(上)

    這是采用PCIe設(shè)計(jì)NVMe,并非調(diào)用XDMA方式,后者在PCIe4.0時(shí)不大方便,故團(tuán)隊(duì)直接采用PCIe設(shè)計(jì),結(jié)合UVM驗(yàn)證加快設(shè)計(jì)速度。 隊(duì)列管理模塊采用隊(duì)列的存儲(chǔ)與控制分離的設(shè)計(jì)結(jié)構(gòu)。
    的頭像 發(fā)表于 08-04 09:53 ?581次閱讀
    NVMe IP高速傳輸卻不依賴(lài)XDMA設(shè)計(jì)之九:<b class='flag-5'>隊(duì)列</b>管理模塊(上)

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)十:隊(duì)列管理模塊設(shè)計(jì)(下)

    數(shù)量的2倍,要保證仲裁效率和良好的時(shí)序,只能降低提交隊(duì)列數(shù)量,導(dǎo)致性能下降。而完成隊(duì)列管理單元所實(shí)現(xiàn)的結(jié)構(gòu)只占用兩個(gè)仲裁請(qǐng)求輸入,基于此可以增加更多的I/O提交隊(duì)列,充分發(fā)揮SSD性能
    發(fā)表于 07-30 16:27

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)九:隊(duì)列管理模塊設(shè)計(jì)(上)

    條目,一個(gè)提交隊(duì)列管理單元用于實(shí)現(xiàn)提交隊(duì)列存儲(chǔ)地址空間的管理和門(mén)鈴控制。在提交隊(duì)列管理單元中,構(gòu)建一個(gè)admin提交隊(duì)列表單和N個(gè)I/O提交
    發(fā)表于 07-27 17:41

    RabbitMQ消息隊(duì)列解決方案

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

    精通 MQTT:消息隊(duì)列遙測(cè)傳輸指南!

    引言MQTT(消息隊(duì)列遙測(cè)傳輸)是一種輕量級(jí)消息協(xié)議,專(zhuān)為低帶寬、高延遲和不可靠的網(wǎng)絡(luò)環(huán)境設(shè)計(jì)。它廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)應(yīng)用、消息系統(tǒng)以及實(shí)時(shí)數(shù)據(jù)通信領(lǐng)域。本指南深入探討了MQTT的工作原理
    的頭像 發(fā)表于 06-16 16:56 ?817次閱讀
    精通 MQTT:消息<b class='flag-5'>隊(duì)列</b>遙測(cè)傳輸指南!

    NVME控制器之隊(duì)列管理模塊

    如圖1所示。 圖1 隊(duì)列管理模塊框圖 在NVMe協(xié)議中,使用隊(duì)列來(lái)傳輸、緩存和處理命令條目,以實(shí)現(xiàn)Host端和NVMe SSD端之間的通信。在CPU上運(yùn)行NVMe軟件協(xié)議,其Ho
    發(fā)表于 05-03 20:19

    NVME控制器之隊(duì)列管理模塊

    隊(duì)列管理模塊是整個(gè)NVMe Host控制器的核心模塊,該模塊實(shí)現(xiàn)了提交隊(duì)列與完成隊(duì)列的管理,多隊(duì)列請(qǐng)求的仲裁判決等功能。
    的頭像 發(fā)表于 05-03 15:32 ?411次閱讀
    NVME控制器之<b class='flag-5'>隊(duì)列</b>管理模塊

    深入淺出解析低功耗藍(lán)牙協(xié)議

    協(xié)議的實(shí)現(xiàn)代碼稱(chēng)為協(xié)議(protocol stack),Bluetooth LE協(xié)議就是實(shí)現(xiàn)低功耗藍(lán)牙協(xié)議的代碼,理解和掌握Bluetooth LE協(xié)議是
    的頭像 發(fā)表于 04-09 14:49 ?980次閱讀
    深入淺出解析低功耗藍(lán)牙協(xié)議<b class='flag-5'>棧</b>

    三種藍(lán)牙架構(gòu)實(shí)現(xiàn)方案(藍(lán)牙協(xié)議方案

    藍(lán)牙架構(gòu)實(shí)現(xiàn)方案哪幾種?我們一般把整個(gè)藍(lán)牙實(shí)現(xiàn)方案叫做藍(lán)牙協(xié)議
    的頭像 發(fā)表于 04-08 15:35 ?1170次閱讀
    三種藍(lán)牙架構(gòu)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方案</b>(藍(lán)牙協(xié)議<b class='flag-5'>棧</b><b class='flag-5'>方案</b>)

    分布式存儲(chǔ)哪幾種類(lèi)型?

    分布式存儲(chǔ)哪幾種類(lèi)型?分布式存儲(chǔ)系統(tǒng)是一種將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立節(jié)點(diǎn)上的技術(shù),根據(jù)數(shù)據(jù)模型可分為鍵值存儲(chǔ)、列式存儲(chǔ)、文檔存儲(chǔ)和圖形存儲(chǔ)等類(lèi)型;按數(shù)據(jù)存儲(chǔ)單位可分為基于文件、塊和對(duì)象的存儲(chǔ);按
    的頭像 發(fā)表于 02-20 11:00 ?1107次閱讀

    常見(jiàn)的有源變壓器哪幾種?

    麻煩問(wèn)一下大家,我們常見(jiàn)的有源變壓器哪幾種?最關(guān)鍵的問(wèn)題是,有源變壓器和無(wú)源變壓器建模方法相同嗎?有源變壓器如何進(jìn)行建模?真心求教,在線等,謝謝了。
    發(fā)表于 01-22 07:47

    曙光云開(kāi)啟全智能時(shí)代

    近日,“全可信 云中生智”曙光云戰(zhàn)略發(fā)布會(huì)召開(kāi)。曙光云從首創(chuàng)“城市云”進(jìn)化到實(shí)現(xiàn)“全智能云”,打造“云智、云安、云算、云數(shù)”四位一體能力體系,深度賦能千行百業(yè)數(shù)智化轉(zhuǎn)型升級(jí)。
    的頭像 發(fā)表于 12-19 15:11 ?895次閱讀