一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

Android編程精選 ? 來源:編程學(xué)習(xí)總站 ? 作者:寫代碼的牛頓 ? 2021-07-04 13:28 ? 次閱讀

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

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

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

pYYBAGDhSEyAdw4iAAASk34tfNs779.jpg

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

poYBAGDhSFSAD2xuAABApH0Njto619.jpg

在數(shù)據(jù)結(jié)構(gòu)與算法篇-隊(duì)列和數(shù)據(jù)結(jié)構(gòu)與算法篇-棧文章里我們詳細(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

棧銷毀函數(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ì)列能否模擬棧呢?通過仔細(xì)觀察方案1發(fā)現(xiàn)queue1出對的數(shù)據(jù)是可以重新再入隊(duì)的,只要讓隊(duì)列里最后一個(gè)元素在隊(duì)列頭即可,那么我們很容易想到方案2。 方案2: 將隊(duì)列queue1里的數(shù)據(jù)依次出隊(duì),且出隊(duì)的數(shù)據(jù)重新放在queue1的隊(duì)尾,直到最后一個(gè)元素在隊(duì)列頭,最后輸出隊(duì)列頭的元素即可。整個(gè)過程我們可以用下圖表示。單個(gè)隊(duì)列模擬棧

poYBAGDhSKaAeLi6AAA3CEypaKE570.jpg

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

pYYBAGDhSLCAVo4rAABl3JgrwOM365.jpg

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

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

poYBAGDhSLqAf1UWAADbnrJOENY998.jpg

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

pYYBAGDhSMSAJ1tIAAAysSP7yQc495.jpg

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

責(zé)任編輯:lq6

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

    關(guān)注

    23

    文章

    4682

    瀏覽量

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

    關(guān)注

    3

    文章

    573

    瀏覽量

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

    關(guān)注

    0

    文章

    47

    瀏覽量

    8561

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

    協(xié)議的實(shí)現(xiàn)代碼稱為協(xié)議(protocol stack),Bluetooth LE協(xié)議就是實(shí)現(xiàn)低功耗藍(lán)牙協(xié)議的代碼,理解和掌握Bluetooth LE協(xié)議是
    的頭像 發(fā)表于 04-09 14:49 ?269次閱讀
    深入淺出解析低功耗藍(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 ?358次閱讀
    三種藍(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>)

    分布式存儲哪幾種類型?

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

    常見的有源變壓器哪幾種

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

    JavaWeb消息隊(duì)列使用指南

    在現(xiàn)代的JavaWeb應(yīng)用中,消息隊(duì)列(Message Queue)是一種常見的技術(shù),用于異步處理任務(wù)、解耦系統(tǒng)組件、提高系統(tǒng)性能和可靠性。 1. 消息隊(duì)列的基本概念 消息隊(duì)列是一種應(yīng)用程序?qū)?yīng)
    的頭像 發(fā)表于 11-25 09:27 ?365次閱讀

    op07c和op37的封裝有哪幾種?

    咨詢op07c和op37的封裝有哪幾種
    發(fā)表于 09-25 08:24

    Linux網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議是操作系統(tǒng)核心的一個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)協(xié)議(Network Stack)負(fù)責(zé)實(shí)現(xiàn) TCP/IP 協(xié)議簇,處理應(yīng)用程序發(fā)起的網(wǎng)絡(luò)
    的頭像 發(fā)表于 09-10 09:51 ?524次閱讀
    Linux網(wǎng)絡(luò)協(xié)議<b class='flag-5'>棧</b>的<b class='flag-5'>實(shí)現(xiàn)</b>

    嵌入式環(huán)形隊(duì)列與消息隊(duì)列實(shí)現(xiàn)原理

    嵌入式環(huán)形隊(duì)列,也稱為環(huán)形緩沖區(qū)或循環(huán)隊(duì)列,是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),用于在固定大小的存儲區(qū)域中高效地存儲和訪問數(shù)據(jù)。其主要特點(diǎn)包括固定大小的數(shù)組和兩個(gè)指針(頭指針和尾指針),分別指向隊(duì)列的起始位置和結(jié)束位置。
    的頭像 發(fā)表于 09-02 15:29 ?976次閱讀

    LED驅(qū)動(dòng)芯片的引腳功能主要包括哪幾種?

    至關(guān)重要的角色 ? LED驅(qū)動(dòng)芯片的引腳功能主要包括哪幾種??? LED驅(qū)動(dòng)芯片的引腳功能主要包括以下10種:? ?1. 電源引腳(VCC、VDD):用于連接芯片的電源正極,提供工作電壓。用戶需要根據(jù)規(guī)格書指定的電源電壓范圍來選擇合適的供電電壓。 ?2. 接地引腳(
    的頭像 發(fā)表于 08-12 10:19 ?2855次閱讀

    玩轉(zhuǎn)RT-Thread之消息隊(duì)列的應(yīng)用

    在嵌入式系統(tǒng)開發(fā)中,實(shí)時(shí)處理串口和ADC數(shù)據(jù)是一項(xiàng)重要的任務(wù)。本文將介紹如何在RT-Thread實(shí)時(shí)操作系統(tǒng)中,利用消息隊(duì)列來同時(shí)處理來自串口和ADC的數(shù)據(jù)。通過這種方法,我們能夠高效地管理和處理
    的頭像 發(fā)表于 07-23 08:11 ?795次閱讀
    玩轉(zhuǎn)RT-Thread之消息<b class='flag-5'>隊(duì)列</b>的應(yīng)用

    TCP/IP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_中文

    電子發(fā)燒友網(wǎng)站提供《TCP/IP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_中文.pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:28 ?4次下載

    LwIP協(xié)議源碼詳解—TCP/IP協(xié)議的實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《LwIP協(xié)議源碼詳解—TCP/IP協(xié)議的實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:22 ?3次下載

    電磁式繼電器哪幾種型號

    形式分類 電磁式繼電器的觸點(diǎn)形式主要有以下幾種: 1.1 單極單通(SPST):只有一個(gè)常開觸點(diǎn),用于控制一個(gè)電路的通斷。 1.2 單極雙通(SPDT):一個(gè)常開觸點(diǎn)和一個(gè)常閉觸點(diǎn),可以實(shí)現(xiàn)一個(gè)電路的切換。 1.3 雙極單通(
    的頭像 發(fā)表于 06-29 09:25 ?1298次閱讀

    斷路器哪幾種

    斷路器哪幾種? 斷路器是一種用于保護(hù)電氣線路和設(shè)備的重要元件,它可以在電路發(fā)生短路或過載時(shí)自動(dòng)切斷電源,以避免設(shè)備損壞和火災(zāi)等危險(xiǎn)。斷路器的種類繁多,根據(jù)不同的分類標(biāo)準(zhǔn),可以分為以下幾種: 1.
    的頭像 發(fā)表于 06-10 16:19 ?3024次閱讀

    STM32單片機(jī)哪幾種常見的開發(fā)環(huán)境?

    STM32單片機(jī)是一款廣泛應(yīng)用于嵌入式系統(tǒng)開發(fā)的單片機(jī),針對其開發(fā),以下幾種常見的方式:STM32單片機(jī)哪幾種常見的開發(fā)環(huán)境?KeilMDK是一款廣泛使用的單片機(jī)集成開發(fā)環(huán)境,支持
    的頭像 發(fā)表于 05-18 08:04 ?3989次閱讀
    STM32單片機(jī)<b class='flag-5'>有</b><b class='flag-5'>哪幾種</b>常見的開發(fā)環(huán)境?