好! 我告訴你。 我畢業(yè)兩年了,都是做c/c++開(kāi)發(fā)方面的~
首先說(shuō)一下數據結構和vc/mfc以及數據結構的應用,vc/mfc主要是開(kāi)發(fā)上位機軟件,即pc機上的軟件的。一般情況下做vc一般開(kāi)發(fā)不需要掌握太多的數據結構知識。開(kāi)發(fā)中不會(huì )用太多,了解就夠了。數據結構一般常用在嵌入式開(kāi)發(fā),譬如路由器開(kāi)發(fā)里常用到樹(shù)結構。
第二數據結構和數學(xué),數據結構里用的最多的是離散數學(xué),尤其是樹(shù)和圖,基本就是離散數學(xué)的知識,其次是線(xiàn)性代數里的矩陣也用的比較多。所以學(xué)習數據結構也不一定要把所有的數學(xué)都學(xué)好。不過(guò)要想學(xué)得好必須先學(xué)好我指的那幾點(diǎn)。否則學(xué)起來(lái)比較吃力。
第三c++、數據結構、vc++。的順序問(wèn)題,數據結構是不分語(yǔ)種的,但你要想學(xué)c++版的數據結構,你首先得了解c++的一般語(yǔ)法吧,至少得看懂偽代碼,常用的c++結構,指針、類(lèi)的使用等。要知道c++是計算機語(yǔ)言、vc是開(kāi)發(fā)工具、數據結構是程序的思路,數學(xué)是基礎。好了,不啰嗦了,相信你都已經(jīng)明白了
第一章:數據結構概述一、什么是數據結構1、作者開(kāi)篇談到: 一般來(lái)說(shuō)解決一個(gè)具體的問(wèn)題時(shí),大致需要經(jīng)過(guò)下列幾個(gè)步驟:首先要從具體的問(wèn)題抽象出一個(gè)適當的數學(xué)模型,然后設計一個(gè)解此數學(xué)模型的算法,最后編寫(xiě)出程序代碼,進(jìn)行測試、調整直至得到最終的解決方案。
總結為:現實(shí)中具體的問(wèn)題—>數學(xué)模型—>算法程序—>解決方案動(dòng)作為:抽象提取、設計編碼、測試調整2、數學(xué)角度闡述: 尋求數學(xué)模型的實(shí)質(zhì)是分析問(wèn)題,從中提取操作的對象,并找出這些操作對象之間含有的關(guān)系,然后用數學(xué)的語(yǔ)言加以描述。3、定義數據結構: 描述這類(lèi)非數值計算問(wèn)題的數學(xué)模型不再是數學(xué)方程,而是諸如表、樹(shù)和圖之類(lèi)的數據結構,因此,簡(jiǎn)單來(lái)說(shuō),數據結構是一門(mén)研究非數值計算的程序設計問(wèn)題中計算機的操作對象以及它們之間關(guān)系和操作等的學(xué)科,用一句話(huà)來(lái)說(shuō)就是,數據結構是相互之間存在一種或多種特定關(guān)系的數據元素的集合。
研究對象:1、集合2、線(xiàn)性結構3、樹(shù)形結構4、圖狀結構(網(wǎng)狀結構) 結構分類(lèi):1、數據的邏輯結構2、數據的物理結構(存儲結構) 關(guān)系表示:1、順序映像2、非順序映像,兩者分別對應為順序存儲結構、鏈式存儲結構二、算法和算法分析 1、算法的五個(gè)特性:有窮性、確定性、可行性、輸入和輸出 2、算法設計的要求:正確性、可讀性、健壯性以及效率與低存儲量需求 3、算法的度量:時(shí)間復雜度和空間復雜度 總結:編寫(xiě)代碼設計算法時(shí)候首先先考慮算法的正確性,確保程序能夠滿(mǎn)足要求,在正確性的前提下再進(jìn)一步考慮算法的可讀性、健壯性、拓展性以及算法的效率等。第二章:線(xiàn)性表一、線(xiàn)性表的定義 線(xiàn)性結構的特點(diǎn)是:在數據元素的非空有限集中(1)存在唯一的一個(gè)被稱(chēng)做“第一個(gè)”的數據元素;(2)存在唯一的一個(gè)被稱(chēng)做“最后一個(gè)”的數據元素;(3)除第一個(gè)之外,集合中每個(gè)數據元素均只有一個(gè)前驅?zhuān)唬?)除最后一個(gè)元素之外,集合中每個(gè)數據元素均只有一個(gè)后繼。
線(xiàn)性表是最常用并且最簡(jiǎn)單的一種數據結構,簡(jiǎn)單來(lái)說(shuō),一個(gè)線(xiàn)性表是n個(gè)數據元素的有限序列。至于每個(gè)數據元素的具體含義,在不同的情況下各不相同,既可以是一個(gè)數也可以是一個(gè)符號等等。
二、線(xiàn)性表的操作 線(xiàn)性表是一個(gè)相當靈活的數據結構,它的長(cháng)度可根據需要增長(cháng)或者縮短,即對線(xiàn)性表的數據元素不但可以進(jìn)行訪(fǎng)問(wèn),還可以進(jìn)行插入和刪除等操作。線(xiàn)性表存儲方式有兩種,順序存儲和鏈式存儲,下面通過(guò)代碼進(jìn)行簡(jiǎn)單模擬操作。
第三章:棧和隊列 棧和隊列是兩種重要的線(xiàn)性結構,從數據結構的角度看,棧和隊列也是線(xiàn)性表,其特殊性在于棧和隊列的基本操作是線(xiàn)性表操作的子集,它們是操作受限制的線(xiàn)性表,因此可以稱(chēng)為限定性的數據結構。一、棧的定義 棧是限定在表尾進(jìn)行插入或刪除操作的線(xiàn)性表,棧的特定是先進(jìn)后出。
棧的存儲方式有兩種,一種是順序棧另外一種是鏈式棧,下面只通過(guò)代碼簡(jiǎn)單模擬棧的操作。二、棧的應用 棧的應用主要有數制轉換、括號匹配的檢驗、迷宮問(wèn)題求解以及表達式求值。
另外棧遞歸實(shí)現的經(jīng)典例子有八皇后問(wèn)題、漢諾塔問(wèn)題等。三、隊列的定義 隊列和棧有點(diǎn)不同,隊列是一種先進(jìn)先出得線(xiàn)性表,它只能夠在表的一端進(jìn)行插入另外一頭進(jìn)行刪除操作。
隊列在程序設計中比較常見(jiàn)的例子是操作系統中的作業(yè)排隊。雙端隊列、循環(huán)隊列有時(shí)間再進(jìn)一步演進(jìn),暫時(shí)先了解些基本概念。
第四章:串一、串的定義 計算機上的非數值處理的對象基本上都是字符串數據。串是由零個(gè)或多個(gè)字符組成的有限序列。
串中字符的數目成為字符串的長(cháng)度,零個(gè)字符的串成為空串。串的模式匹配算法經(jīng)典的是KMP算法。
第五章:數組和廣義表一、數組和廣義表定義 數組是讀者已經(jīng)很熟悉的一種數據類(lèi)型,幾乎所有的程序設計語(yǔ)言都把數組類(lèi)型設為固有的類(lèi)型。數組的應用中涉及到一個(gè)比較重要的數學(xué)知識,矩陣的壓縮存儲問(wèn)題。
廣義表是線(xiàn)性表的推廣,在java開(kāi)發(fā)中好像用得不多,有時(shí)間再進(jìn)一步學(xué)習。 第六章:樹(shù)和二叉樹(shù)一、樹(shù)的定義和基本操作1、樹(shù)的特點(diǎn) 樹(shù)是一個(gè)結點(diǎn)n的有限集,在任意一顆樹(shù)非空樹(shù)中:1、有且只有一個(gè)根結點(diǎn),2、當n>1時(shí),其余結點(diǎn)分為m(m>0)個(gè)互不相交的有限集,其中每個(gè)集合本身又是一棵樹(shù),叫做根的子樹(shù)。
關(guān)鍵詞組:有限集、唯一性、對稱(chēng)性、遞歸性。 基本術(shù)語(yǔ):結點(diǎn)、度、葉子、分支結點(diǎn)、孩子、雙親、兄弟、層次以及深度等。
基本操作:構造初始化樹(shù)、取得左子樹(shù)或右子樹(shù)、插入結點(diǎn)、刪除結點(diǎn)、樹(shù)的遍歷等等。2、線(xiàn)性結構VS樹(shù)結構 線(xiàn)性結構是一個(gè)“序列”,元素之間存在的是“一對一”的關(guān)系,而樹(shù)是一個(gè)層次結構,元素之間存在的是“一對多”的關(guān)系。
二、二叉樹(shù)的定義1、二叉樹(shù)的特點(diǎn) 每個(gè)結點(diǎn)至多只有二棵子樹(shù)(即二叉樹(shù)中不存在度大于2的結點(diǎn)),并且二叉樹(shù)的子樹(shù)有左右之分,其次序不能顛倒。 關(guān)鍵詞組:對稱(chēng)、次序2、二叉樹(shù)的具體實(shí)例 滿(mǎn)二叉樹(shù)、完全二叉樹(shù)、平衡二叉樹(shù)等,具體區別參考書(shū)籍教材詳解。
3、二叉樹(shù)的存儲結構 主要分為兩種方式,一類(lèi)是順序結構(可使用一組地址連續的存儲單元依次自上而下、自左至右存儲完全二叉樹(shù)上的結點(diǎn)元。
學(xué)習數據結構我個(gè)人認為如果將來(lái)只側重于實(shí)用,不做很深研究的話(huà),只要掌握高中的所有數學(xué)知識就行。
強調一下,雖然只需要掌握高中的數學(xué)知識,但是,你必須學(xué)的精。高考必須可以考135以上。
最早的計算機模型就是由數學(xué)家提出的,所以這個(gè)標準不知道你是否覺(jué)得苛刻了點(diǎn)。如果這個(gè)層次都達不到。
那么你是不可能學(xué)精通的。當然,由于數學(xué)與計算機之間有著(zhù)千絲萬(wàn)屢的聯(lián)系,所以我還是希望你能把大學(xué)的數學(xué)知識都學(xué)好,例如離散數學(xué),線(xiàn)性代數——。
這樣對你的提高有百利而無(wú)一害。(這里談一點(diǎn)我的心得)。
第一章 什么是數據結構1.1 基本概念和術(shù)語(yǔ)1.2 數據的邏輯結構和物理結構 1.1 基本概念和術(shù)語(yǔ)1.數據(data): 是對客觀(guān)事物的符號的表示,是所有能輸入到計算機中并被計算機程序處理的符號的總稱(chēng)。
2.數據元素(data element): 是數據的基本單位,在計算機程序中通常作為一個(gè)整體來(lái)處理。一個(gè)數據元素由多個(gè) 數據項(data item)組成,數據 項是數據不可分割的最小單位。
3.數據結構(data structure): 是相互之間存在一種或多種特定關(guān)系的數據元素的集合。數據結構是一個(gè)二元組,記為: data_structure=(D,S).其中D為數據元素的集合,S是D上關(guān)系的集合。
數據元素相互之間的關(guān)系稱(chēng)為結構(structure)。根據數據元素之間關(guān)系的不同特性,通常由下列四類(lèi)基本結構: (1)集合:數據元素間的關(guān)系是同屬一個(gè)集合。
(圖1) (2)線(xiàn)性結構:數據元素間存在一對一的關(guān)系。(圖2) (3)樹(shù)形結構:結構中的元素間的關(guān)系是一對多的關(guān)系。
(圖3) (4)圖(網(wǎng))狀結構:結構中的元素間的關(guān)系是多對多的關(guān)系。(圖4) 1.2 數據的邏輯結構和物理結構邏輯結構:數據元素之間存在的關(guān)系(邏輯關(guān)系)叫數據的邏輯結構。
物理結構:數據結構在計算機中的表示(映象)叫數據的物理結構。 一種邏輯結構可映象成不同的存儲結構:順序存儲結構和非順序存儲結構(鏈式存儲結構和散列結構)。
第一章 什么是數據結構
1.1 基本概念和術(shù)語(yǔ)
1.2 數據的邏輯結構和物理結構
1.1 基本概念和術(shù)語(yǔ)
1.數據(data):
是對客觀(guān)事物的符號的表示,是所有能輸入到計算機中并被計算機程序處理的符號的總稱(chēng)。
2.數據元素(data element):
是數據的基本單位,在計算機程序中通常作為一個(gè)整體來(lái)處理。一個(gè)數據元素由多個(gè) 數據項(data item)組成,數據 項是數據不可分割的最小單位。
3.數據結構(data structure):
是相互之間存在一種或多種特定關(guān)系的數據元素的集合。數據結構是一個(gè)二元組,記為:
data_structure=(D,S).其中D為數據元素的集合,S是D上關(guān)系的集合。
數據元素相互之間的關(guān)系稱(chēng)為結構(structure)。根據數據元素之間關(guān)系的不同特性,通常由下列四類(lèi)基本結構:
(1)集合:數據元素間的關(guān)系是同屬一個(gè)集合。(圖1)
(2)線(xiàn)性結構:數據元素間存在一對一的關(guān)系。(圖2)
(3)樹(shù)形結構:結構中的元素間的關(guān)系是一對多的關(guān)系。(圖3)
(4)圖(網(wǎng))狀結構:結構中的元素間的關(guān)系是多對多的關(guān)系。(圖4)
1.2 數據的邏輯結構和物理結構
邏輯結構:數據元素之間存在的關(guān)系(邏輯關(guān)系)叫數據的邏輯結構。
物理結構:數據結構在計算機中的表示(映象)叫數據的物理結構。
一種邏輯結構可映象成不同的存儲結構:順序存儲結構和非順序存儲結構(鏈式存儲結構和散列結構)。
數據結構在計算機科學(xué)界至今沒(méi)有標準的定義。
個(gè)人根據各自的理解的不同而有不同的表述方法: Sartaj Sahni在他的《數據結構、算法與應用》一書(shū)中稱(chēng):“數據結構是數據對象,以及存在于該對象的實(shí)例和組成實(shí) 例的數據元素之間的各種聯(lián)系。這些聯(lián)系可以通過(guò)定義相關(guān)的函數來(lái)給出。”
他將數據對象(data object)定義為“一個(gè)數據對象是實(shí)例或值的集合”。 Clifford A.Shaffer在《數據結構與算法分析》一書(shū)中的定義是:“數據結構是 ADT(抽象數據類(lèi)型Abstract Data Type) 的物理實(shí)現。”
Lobert L.Kruse在《數據結構與程序設計》一書(shū)中,將一個(gè)數據結構的設計過(guò)程分成抽象層、數據結構層和實(shí)現層。其中,抽象層是指抽象數據類(lèi)型層,它討論數據的邏輯結構及其運算,數據結構層和實(shí)現層討論一個(gè)數據結構的表示和在計算機內的存儲細節以及運算的實(shí)現。
數據結構具體指同一類(lèi)數據元素中,各元素之間的相互關(guān)系,包括三個(gè)組成成分,數據的邏輯結構,數據的存儲結構和數據運算結構。編輯本段重要意義 一般認為,一個(gè)數據結構是由數據元素依據某種邏輯聯(lián)系組織起來(lái)的。
對數據元素間邏輯關(guān)系的描述稱(chēng)為數據的邏輯結構;數據必須在計算機內存儲,數據的存儲結構是數據結構的實(shí)現形式,是其在計算機內的表示;此外討論一個(gè)數據結構必須同時(shí)討論在該類(lèi)數據上執行的運算才有意義。一個(gè)邏輯數據結構可以有多種存儲結構,且各種存儲結構影響數據處理的效率。
在許多類(lèi)型的程序的設計中,數據結構的選擇是一個(gè)基本的設計考慮因素。許多大型系統的構造經(jīng)驗表明,系統實(shí)現的困難程度和系統構造的質(zhì)量都嚴重的依賴(lài)于是否選擇了最優(yōu)的數據結構。
許多時(shí)候,確定了數據結構后,算法就容易得到了。有些時(shí)候事情也會(huì )反過(guò)來(lái),我們根據特定算法來(lái)選擇數據結構與之適應。
不論哪種情況,選擇合適的數據結構都是非常重要的。 選擇了數據結構,算法也隨之確定,是數據而不是算法是系統構造的關(guān)鍵因素。
這種洞見(jiàn)導致了許多種軟件設計方法和程序設計語(yǔ)言的出現,面向對象的程序設計語(yǔ)言就是其中之一。編輯本段研究?jì)热? 在計算機科學(xué)中,數據結構是一門(mén)研究非數值計算的程序設計問(wèn)題中計算機的操作對象(數據元素)以及它們之間的關(guān)系和運算等的學(xué)科,而且確保經(jīng)過(guò)這些運算后所得到的新結構仍然是原來(lái)的結構類(lèi)型。
“數據結構”作為一門(mén)獨立的課程在國外是從1968年才開(kāi)始設立的。 1968年美國唐·歐·克努特教授開(kāi)創(chuàng )了數據結構的最初體系,他所著(zhù)的《計算機程序設計技巧》第一卷《基本算法》是第一本較系統地闡述數據的邏輯結構和存儲結構及其操作的著(zhù)作。
“數據結構”在計算機科學(xué)中是一門(mén)綜合性的專(zhuān)業(yè)基礎課。數據結構是介于數學(xué)、計算機硬件和計算機軟件三者之間的一門(mén)核心課程。
數據結構這一門(mén)課的內容不僅是一般程序設計(特別是非數值性程序設計)的基礎,而且是設計和實(shí)現編譯程序、操作系統、數據庫系統及其他系統程序的重要基礎。 計算機是一門(mén)研究用計算機進(jìn)行信息表示和處理的科學(xué)。
這里面涉及到兩個(gè)問(wèn)題:信息的表示,信息的處理 。 而信息的表示和組織又直接關(guān)系到處理信息的程序的效率。
隨著(zhù)計算機的普及,信息量的增加,信息范圍的拓寬,使許多系統程序和應用程序的規模很大,結構又相當復雜。因此,為了編寫(xiě)出一個(gè)“好”的程序,必須分析待處理的對象的特征及各對象之間存在的關(guān)系,這就是數據結構這門(mén)課所要研究的問(wèn)題。
眾所周知,計算機的程序是對信息進(jìn)行加工處理。在大多數情況下,這些信息并不是沒(méi)有組織,信息(數據)之間往往具有重要的結構關(guān)系,這就是數據結構的內容。
數據的結構,直接影響算法的選擇和效率。 計算機解決一個(gè)具體問(wèn)題時(shí),大致需要經(jīng)過(guò)下列幾個(gè)步驟:首先要從具體問(wèn)題中抽象出一個(gè)適當的數學(xué)模型,然后設計一個(gè)解此數學(xué)模型的算法(Algorithm),最后編出程序、進(jìn)行測試、調整直至得到最終解答。
尋求數學(xué)模型的實(shí)質(zhì)是分析問(wèn)題,從中提取操作的對象,并找出這些操作對象之間含有的關(guān)系,然后用數學(xué)的語(yǔ)言加以描述。計算機算法與數據的結構密切相關(guān),算法無(wú)不依附于具體的數據結構,數據結構直接關(guān)系到算法的選擇和效率。
運算是由計算機來(lái)完成,這就要設計相應的插入、刪除和修改的算法 。也就是說(shuō),數據結構還需要給出每種結構類(lèi)型所定義的各種運算的算法。
數據是對客觀(guān)事物的符號表示,在計算機科學(xué)中是指所有能輸入到計算機中并由計算機程序處理的符號的總稱(chēng)。 數據元素是數據的基本單位,在計算機程序中通常作為一個(gè)整體考慮。
一個(gè)數據元素由若干個(gè)數據項組成。數據項是數據的不可分割的最小單位。
有兩類(lèi)數據元素:一類(lèi)是不可分割的原子型數據元素,如:整數"5",字符 "N" 等;另一類(lèi)是由多個(gè)款項構成的數據元素,其中每個(gè)款項被稱(chēng)為一個(gè)數據項。例如描述一個(gè)學(xué)生的信息的數據元素可由下列6個(gè)數據項組成。
其中的出生日期又可以由三個(gè)數據項:"年"、"月"和"日"組成,則稱(chēng)"出生日期"為組合項,而其它不可分割的數據項為原子項。 關(guān)鍵字指的是能識別一個(gè)或多個(gè)數據元素的數據項。
若能。
棧和隊列:基礎章節,容易出基本概念題,必考內容之一。
而棧常與其它章節配合考查,也常與遞歸等概念相聯(lián)系進(jìn)行考查。 串 :基礎章節,概念較為簡(jiǎn)單。
專(zhuān)門(mén)針對于此章的大型算法設計題很少,較常見(jiàn)的是根據KMP進(jìn)行算法分析。 多維數組及廣義表 :基礎章節,基于數組的算法題也是常見(jiàn)的,分數比例波動(dòng)較大,是出題的“可選單元”或“侯補單元”。
一般如果要出題,多數不會(huì )作為大題出。數組常與“查找,排序”等章節結合來(lái)作為大題考查。
樹(shù)和二叉樹(shù) :重點(diǎn)難點(diǎn)章節,各校必考章節。各校在此章出題的不同之處在于,是否在本章中出一到兩道大的算法設計題。
通過(guò)對多所學(xué)校的試卷分析,絕大多數學(xué)校在本章都曾有過(guò)出大型算法設計題的歷史。 圖 :重點(diǎn)難點(diǎn)章節,名校尤愛(ài)考。
如果作為重點(diǎn)來(lái)考,則多出現于分析與設計題型當中,可與樹(shù)一章共同構成算法設計大題的題型設計。 查找 :重點(diǎn)難點(diǎn)章節,概念較多,聯(lián)系較為緊密,容易混淆。
出題時(shí)可以作為分析型題目給出,在基本概念型題目中也較為常見(jiàn)。算法設計型題中可以數組結合來(lái)考查,也可以與樹(shù)一章結合來(lái)考查。
排序 :與查找一章類(lèi)似,本章同屬于重點(diǎn)難點(diǎn)章節,且概念更多,聯(lián)系更為緊密,概念之間更容易混淆。在基本概念的考查中,尤愛(ài)考各種排序算法的優(yōu)劣比較此類(lèi)的題。
算法設計大題中,如果作為出題,那么常與數組結合來(lái)考查。 二、數據結構各章節重點(diǎn)勾劃: 第0章 概述 本章主要起到總領(lǐng)作用,為讀者進(jìn)行數據結構的學(xué)習進(jìn)行了一些先期鋪墊。
大家主要注意以下幾點(diǎn):數據結構的基本概念,時(shí)間和空間復雜度的概念及度量方法,算法設計時(shí)的注意事項。本章考點(diǎn)不多,只要稍加注意理解即可。
第一章 線(xiàn)性表 作為線(xiàn)性結構的開(kāi)篇章節,線(xiàn)性表一章在線(xiàn)性結構的學(xué)習乃至整個(gè)數據結構學(xué)科的學(xué)習中,其作用都是不可低估的。在這一章,第一次系統性地引入鏈式存儲的概念,鏈式存儲概念將是整個(gè)數據結構學(xué)科的重中之重,無(wú)論哪一章都涉及到了這個(gè)概念。
總體來(lái)說(shuō),線(xiàn)性表一章可供考查的重要考點(diǎn)有以下幾個(gè)方面: 1.線(xiàn)性表的相關(guān)基本概念,如:前驅、后繼、表長(cháng)、空表、首元結點(diǎn),頭結點(diǎn),頭指針等概念。 2.線(xiàn)性表的結構特點(diǎn),主要是指:除第一及最后一個(gè)元素外,每個(gè)結點(diǎn)都只有一個(gè)前趨和只有一個(gè)后繼。
3.線(xiàn)性表的順序存儲方式及其在具體語(yǔ)言環(huán)境下的兩種不同實(shí)現:表空間的靜態(tài)分配和動(dòng)態(tài)分配。靜態(tài)鏈表與順序表的相似及不同之處。
4.線(xiàn)性表的鏈式存儲方式及以下幾種常用鏈表的特點(diǎn)和運算:?jiǎn)捂湵怼⒀h(huán)鏈表,雙向鏈表,雙向循環(huán)鏈表。其中,單鏈表的歸并算法、循環(huán)鏈表的歸并算法、雙向鏈表及雙向循環(huán)鏈表的插入和刪除算法等都是較為常見(jiàn)的考查方式。
此外,近年來(lái)在不少學(xué)校中還多次出現要求用遞歸算法實(shí)現單鏈表輸出(可能是順序也可能是倒序)的問(wèn)題。 在鏈表的小題型中,經(jīng)常考到一些諸如:判表空的題。
在不同的鏈表中,其判表空的方式是不一樣的,請大家注意。 5.線(xiàn)性表的順序存儲及鏈式存儲情況下,其不同的優(yōu)缺點(diǎn)比較,即其各自適用的場(chǎng)合。
單鏈表中設置頭指針、循環(huán)鏈表中設置尾指針而不設置頭指針以及索引存儲結構的各自好處。 棧與隊列,是很多學(xué)習DS的同學(xué)遇到第一只攔路虎,很多人從這一章開(kāi)始坐暈車(chē),一直暈到現在。
所以,理解棧與隊列,是走向DS高手的一條必由之路,。 學(xué)習此章前,你可以問(wèn)一下自己是不是已經(jīng)知道了以下幾點(diǎn): 1.棧、隊列的定義及其相關(guān)數據結構的概念,包括:順序棧,鏈棧,共享棧,循環(huán)隊列,鏈隊等。
棧與隊列存取數據(請注意包括:存和取兩部分)的特點(diǎn)。 2.遞歸算法。
棧與遞歸的關(guān)系,以及借助棧將遞歸轉向于非遞歸的經(jīng)典算法:n!階乘問(wèn)題,fib數列問(wèn)題,hanoi問(wèn)題,背包問(wèn)題,二叉樹(shù)的遞歸和非遞歸遍歷問(wèn)題,圖的深度遍歷與棧的關(guān)系等。其中,涉及到樹(shù)與圖的問(wèn)題,多半會(huì )在樹(shù)與圖的相關(guān)章節中進(jìn)行考查。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.903秒