版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、棧和隊(duì)列基本概念棧(stack)是限制插入和刪除只能在一個(gè)位置上進(jìn)行的表,該位置是表的末端,叫做棧的頂(top),它是后進(jìn)先出(LIFO)的。對棧的基本操作只有push(進(jìn)棧)和pop(出棧)兩種,前者相當(dāng)于插入,后者相當(dāng)于刪除最后的元素。由于棧在本質(zhì)上是一種受限制的表,所以可以使用任何一種表的形式來實(shí)現(xiàn)它,我們最常使用的一般有兩種:鏈表 數(shù)組 它們在復(fù)雜度上的優(yōu)缺點(diǎn)對比如下:新增和刪除元素時(shí)的時(shí)間復(fù)雜度 鏈表:在動(dòng)態(tài)申請內(nèi)存(new或者malloc)上的花銷非常昂貴。 數(shù)組:幾乎沒有花銷,以常數(shù)O(1)時(shí)間運(yùn)行,在帶有自增和自減尋址功能的寄存器上操作時(shí),編譯器會(huì)把整數(shù)的push和pop操作編
2、譯成一條機(jī)器指令。 空間復(fù)雜度 鏈表:由于空間是動(dòng)態(tài)申請、釋放的,因此不會(huì)浪費(fèi)空間,而且只要物理存儲器允許,理論上能夠滿足最大范圍未知的情況。 數(shù)組:必須在初始化時(shí)指定棧的大小,有可能會(huì)浪費(fèi)空間,也有可能不夠空間用。 結(jié)論如果對運(yùn)行時(shí)的效率要求非常高,并且能夠在初始化時(shí)預(yù)知棧的大小,那么應(yīng)該首選數(shù)組形式;否則就應(yīng)該選用鏈表形式。 由于對棧的操作永遠(yuǎn)都是針對棧頂(top)進(jìn)行的,因此數(shù)組的隨機(jī)存取的優(yōu)點(diǎn)就沒有了,而且數(shù)組必須預(yù)先分配空間,空間大小也受到限制,所以一般情況下(對運(yùn)行時(shí)效率的要求不是太高)鏈表應(yīng)該是首選。在C+的繼承機(jī)制下,棧的實(shí)現(xiàn)簡單得可怕。 :)一個(gè)影響棧的運(yùn)行效率的問題是錯(cuò)誤檢
3、測。我的棧實(shí)現(xiàn)中是仔細(xì)地檢查了錯(cuò)誤的對空棧進(jìn)行top和pop操作,以及當(dāng)存儲空間不夠時(shí)進(jìn)行push操作是會(huì)引起異常的,顯然,我們不愿意出現(xiàn)這種情況,但是,如果把對這些條件的檢測放到代碼中,那就很可能要花費(fèi)像實(shí)際棧操作那樣多的時(shí)間。由于這個(gè)原因,除非在錯(cuò)誤處理極其重要的場合(例如在操作系統(tǒng)中),一般在棧中省去錯(cuò)誤檢測就成了普通的慣用手法。一個(gè)良好的程序首先應(yīng)該是健壯的,這比效率還要重要,特別是對于棧這種最基本的數(shù)據(jù)結(jié)構(gòu),它很可能會(huì)被作為基本的元素而被別的地方大量地使用。引入錯(cuò)誤檢查機(jī)制的代價(jià)是:操作變得有些繁瑣.像棧一樣,隊(duì)列(queue)也是表。然而,使用隊(duì)列時(shí)插入在一端進(jìn)行而刪除則在另一端進(jìn)行,也就是先進(jìn)先出(FIFO)。隊(duì)列的基本操作是EnQueue(入隊(duì)),它是在表的末端(叫做隊(duì)尾(rear)插入一個(gè)元素;還有DeQueue(出隊(duì)),它是刪除(或返回)在表的開頭(叫做隊(duì)頭(front)的元素。隊(duì)列一般有鏈?zhǔn)疥?duì)列和循環(huán)隊(duì)列兩種。鏈?zhǔn)疥?duì)列相當(dāng)于我們在銀行中排隊(duì),后來的人排到隊(duì)伍的最后,前面的人辦理完業(yè)務(wù)后就會(huì)離開,讓下一個(gè)人進(jìn)去;循環(huán)隊(duì)列則跟循環(huán)鏈表很相似。隊(duì)列的應(yīng)用一般來說是模擬現(xiàn)實(shí)生活中的一些離散現(xiàn)象,例如銀行排隊(duì)、打印機(jī)任務(wù)、接線員工作等等。還有的就是使用隊(duì)列來提高運(yùn)行效率的算法,這些一般是在圖算法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 民營醫(yī)院規(guī)制度
- 裝備科工作總結(jié)
- 建設(shè)施工機(jī)械設(shè)備合同書(3篇)
- 期末總結(jié)范文1200字(32篇)
- 投標(biāo)保密的承諾書(30篇)
- 大一學(xué)生干部個(gè)人總結(jié)
- 江蘇省泰州市(2024年-2025年小學(xué)五年級語文)人教版期末考試((上下)學(xué)期)試卷及答案
- 公共衛(wèi)生主題培訓(xùn)
- 世界歷史九年級上冊教案全冊
- DB11T 1133-2014 人工砂應(yīng)用技術(shù)規(guī)程
- 2024-2030年冬蟲夏草行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 《20世紀(jì)的科學(xué)偉人愛因斯坦》參考課件2
- 八年級道德與法治上冊 第一單元 走進(jìn)社會(huì)生活 單元復(fù)習(xí)課件
- 設(shè)計(jì)師會(huì)議管理制度
- 三年級上冊數(shù)學(xué)說課稿《5.筆算多位數(shù)乘一位數(shù)(連續(xù)進(jìn)位)》人教新課標(biāo)
- 十字相乘法解一元二次方程練習(xí)100題及答案
- 行賄受賄檢討書
- 人教版《勞動(dòng)教育》六上 勞動(dòng)項(xiàng)目二《晾曬被子》教學(xué)設(shè)計(jì)
- (正式版)QC∕T 1208-2024 燃料電池發(fā)動(dòng)機(jī)用氫氣循環(huán)泵
- 中外合作辦學(xué)規(guī)劃方案
- 2024年人教版初一道德與法治上冊期中考試卷(附答案)
評論
0/150
提交評論