版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文題目名稱(chēng)數(shù)據(jù)結(jié)構(gòu)應(yīng)用課程名稱(chēng)數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版)學(xué)生姓名宋杰偉王兵俞振光王黎明郭凱專(zhuān)業(yè)網(wǎng)絡(luò)工程(2)班數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第1頁(yè)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第1頁(yè)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用摘要數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專(zhuān)業(yè)最基礎(chǔ)也是最重要的學(xué)科之一。它和程序設(shè)計(jì)一起未計(jì)算科學(xué)其他后繼課程的學(xué)習(xí)奠定了基礎(chǔ)。在計(jì)算機(jī)廣泛普及的今天,其應(yīng)用幾乎涵蓋了人類(lèi)社會(huì)的所有領(lǐng)域,而且在航空航天、軍事、科學(xué)計(jì)算、信息檢索、生產(chǎn)線(xiàn)控制等一些關(guān)鍵領(lǐng)域已經(jīng)高度依賴(lài)計(jì)算機(jī)系統(tǒng),而數(shù)據(jù)結(jié)構(gòu)在其中起著無(wú)可替代的應(yīng)用。其實(shí)生活中也有好多應(yīng)用數(shù)據(jù)結(jié)構(gòu)的小事,只要留心觀察,它無(wú)處不在。例如:我們的家族圖譜,遺傳病圖譜,公司成員職位一覽表都應(yīng)用到了數(shù)據(jù)結(jié)構(gòu)中的樹(shù);還有我們小的時(shí)候玩的丟手絹游戲其實(shí)也用到了數(shù)據(jù)結(jié)構(gòu)中的循環(huán)列表,而且在換人時(shí)用到了循環(huán)列表的插入和刪除。所以說(shuō),數(shù)據(jù)結(jié)構(gòu)與我們的生活息息相關(guān),學(xué)習(xí)和掌握好數(shù)據(jù)結(jié)構(gòu)對(duì)我們處理日常生活中遇到的問(wèn)題一定會(huì)有很大的幫助。關(guān)鍵字?jǐn)?shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)專(zhuān)業(yè),學(xué)科,應(yīng)用,邏輯結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu),算法優(yōu)化。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第2頁(yè)。參考文獻(xiàn)1、嚴(yán)蔚敏吳偉民數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)清華大學(xué)出版社;2、莊晉林楊彬?qū)嵱脭?shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)中國(guó)水利水電出版社;3、翁惠玉俞勇數(shù)據(jù)結(jié)構(gòu):思想與實(shí)現(xiàn);4、百度百科。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第3頁(yè)。正文數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)科學(xué)界至今沒(méi)有標(biāo)準(zhǔn)的定義。個(gè)人根據(jù)各自的理解的不同而有不同的表述方法:SatartiaSahibah在他的《數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用》一書(shū)中稱(chēng):“數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)對(duì)象,以及存在于該對(duì)象的實(shí)例和組成實(shí)例的數(shù)據(jù)元素之間的各種聯(lián)系。這些聯(lián)系可以通過(guò)定義相關(guān)的函數(shù)來(lái)給出?!彼麑?shù)據(jù)對(duì)象(dataobject)定義為“一個(gè)數(shù)據(jù)對(duì)象是實(shí)例或值的集合”。CliffordA.Shaffer在《數(shù)據(jù)結(jié)構(gòu)與算法分析》一書(shū)中的定義是:“數(shù)據(jù)結(jié)構(gòu)是ADT(抽象數(shù)據(jù)類(lèi)型AbstractDataType)的物理實(shí)現(xiàn)?!盧obertL.Ruse在《數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)》一書(shū)中,將一個(gè)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)過(guò)程分成抽象層、數(shù)據(jù)結(jié)構(gòu)層和實(shí)現(xiàn)層。其中,抽象層是指抽象數(shù)據(jù)類(lèi)型層,它討論數(shù)據(jù)的邏輯結(jié)構(gòu)及其運(yùn)算,數(shù)據(jù)結(jié)構(gòu)層和實(shí)現(xiàn)層討論一個(gè)數(shù)據(jù)結(jié)構(gòu)的表示和在計(jì)算機(jī)內(nèi)的存儲(chǔ)細(xì)節(jié)以及運(yùn)算的實(shí)現(xiàn)。數(shù)據(jù)結(jié)構(gòu)具體指同一類(lèi)數(shù)據(jù)元素中,各元素之間的相互關(guān)系,包括三個(gè)組成成分,數(shù)據(jù)的邏輯結(jié)構(gòu),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)運(yùn)算結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第4頁(yè)。一般認(rèn)為,一個(gè)數(shù)據(jù)結(jié)構(gòu)是由數(shù)據(jù)元素依據(jù)某種邏輯聯(lián)系組織起來(lái)的。對(duì)數(shù)據(jù)元素間邏輯關(guān)系的描述稱(chēng)為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計(jì)算機(jī)內(nèi)存儲(chǔ),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)形式,是其在計(jì)算機(jī)內(nèi)的表示;此外討論一個(gè)數(shù)據(jù)結(jié)構(gòu)必須同時(shí)討論在該類(lèi)數(shù)據(jù)上執(zhí)行的運(yùn)算才有意義。在許多類(lèi)型的程序的設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)的選擇是一個(gè)基本的設(shè)計(jì)考慮因素。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第4頁(yè)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第5頁(yè)。在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中計(jì)算機(jī)的操作對(duì)象(數(shù)據(jù)元素)以及它們之間的關(guān)系和運(yùn)算等的學(xué)科,而且確保經(jīng)過(guò)這些運(yùn)算后所得到的新結(jié)構(gòu)仍然是原來(lái)的結(jié)構(gòu)類(lèi)型?!皵?shù)據(jù)結(jié)構(gòu)”作為一門(mén)獨(dú)立的課程在國(guó)外是從1968年才開(kāi)始設(shè)立的。1968年美國(guó)唐·歐·克努特教授開(kāi)創(chuàng)了數(shù)據(jù)結(jié)構(gòu)的最初體系,他所著的《計(jì)算機(jī)程序設(shè)計(jì)技巧》第一卷《基本算法》是第一本較系統(tǒng)地闡述數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)及其操作的著作。“數(shù)據(jù)結(jié)構(gòu)”在計(jì)算機(jī)科學(xué)中是一門(mén)綜合性的專(zhuān)業(yè)基礎(chǔ)課。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件三者之間的一門(mén)核心課程。數(shù)據(jù)結(jié)構(gòu)這一門(mén)課的內(nèi)容不僅是一般程序設(shè)計(jì)(特別是非數(shù)值性程序設(shè)計(jì))的基礎(chǔ),而且是設(shè)計(jì)和實(shí)現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)及其他系統(tǒng)程序的重要基礎(chǔ)。計(jì)算機(jī)是一門(mén)研究用計(jì)算機(jī)進(jìn)行信息表示和處理的科學(xué)。這里面涉及到兩個(gè)問(wèn)題:信息的表示,信息的處理。而信息的表示和組織又直接關(guān)系到處理信息的程序的效率。隨著計(jì)算機(jī)的普及,信息量的增加,信息范圍的拓寬,使許多系統(tǒng)程序和應(yīng)用程序的規(guī)模很大,結(jié)構(gòu)又相當(dāng)復(fù)雜。因此,為了編寫(xiě)出一個(gè)“好”的程序,必須分析待處理的對(duì)象的特征及各對(duì)象之間存在的關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)這門(mén)課所要研究的問(wèn)題。眾所周知,計(jì)算機(jī)的程序是對(duì)信息進(jìn)行加工處理。在大多數(shù)情況下,這些信息并不是沒(méi)有組織,信息(數(shù)據(jù))之間往往具有重要的結(jié)構(gòu)關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。數(shù)據(jù)的結(jié)構(gòu),直接影響算法的選擇和效率。計(jì)算機(jī)解決一個(gè)具體問(wèn)題時(shí),大致需要經(jīng)過(guò)下列幾個(gè)步驟:首先要從具體問(wèn)題中抽象出一個(gè)適當(dāng)?shù)臄?shù)學(xué)模型,然后設(shè)計(jì)一個(gè)解此數(shù)學(xué)模型的算法(Algorithm),最后編出程序、進(jìn)行測(cè)試、調(diào)整直至得到最終解答。尋求數(shù)學(xué)模型的實(shí)質(zhì)是分析問(wèn)題,從中提取操作的對(duì)象,并找出這些操作對(duì)象之間含有的關(guān)系,然后用數(shù)學(xué)的語(yǔ)言加以描述。計(jì)算機(jī)算法與數(shù)據(jù)的結(jié)構(gòu)密切相關(guān),算法無(wú)不依附于具體的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)直接關(guān)系到算法的選擇和效率。運(yùn)算是由計(jì)算機(jī)來(lái)完成,這就要設(shè)計(jì)相應(yīng)的插入、刪除和修改的算法。也就是說(shuō),數(shù)據(jù)結(jié)構(gòu)還需要給出每種結(jié)構(gòu)類(lèi)型所定義的各種運(yùn)算的算法。數(shù)據(jù)是對(duì)客觀事物的符號(hào)表示,在計(jì)算機(jī)科學(xué)中是指所有能輸入到計(jì)算機(jī)中并由計(jì)算機(jī)程序處理的符號(hào)的總稱(chēng)。數(shù)據(jù)元素是數(shù)據(jù)的基本單位,在計(jì)算機(jī)程序中通常作為一個(gè)整體考慮。一個(gè)數(shù)據(jù)元素由若干個(gè)數(shù)據(jù)項(xiàng)組成。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。有兩類(lèi)數(shù)據(jù)元素:一類(lèi)是不可分割的原子型數(shù)據(jù)元素,如:整數(shù)"5",字符"N"等;另一類(lèi)是由多個(gè)款項(xiàng)構(gòu)成的數(shù)據(jù)元素,其中每個(gè)款項(xiàng)被稱(chēng)為一個(gè)數(shù)據(jù)項(xiàng)。例如描述一個(gè)學(xué)生的信息的數(shù)據(jù)元素可由下列6個(gè)數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第6頁(yè)。數(shù)據(jù)項(xiàng)組成。其中的出生日期又可以由三個(gè)數(shù)據(jù)項(xiàng):"年"、"月"和"日"組成,則稱(chēng)"出生日期"為組合項(xiàng),而其它不可分割的數(shù)據(jù)項(xiàng)為原子項(xiàng)。關(guān)鍵字指的是能識(shí)別一個(gè)或多個(gè)數(shù)據(jù)元素的數(shù)據(jù)項(xiàng)。若能起唯一識(shí)別作用,則稱(chēng)之為"主"關(guān)鍵字,否則稱(chēng)之為"次"關(guān)鍵字。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第5頁(yè)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第6頁(yè)?!皵?shù)據(jù)結(jié)構(gòu)+算法=程序”,這就說(shuō)明程序設(shè)計(jì)的實(shí)質(zhì)就是對(duì)確定的問(wèn)題選擇一種合適的數(shù)據(jù)結(jié)構(gòu),加上設(shè)計(jì)一種好的算法。由此可見(jiàn),數(shù)據(jù)結(jié)構(gòu)在程序設(shè)計(jì)中有著十分重要的地位。數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。因?yàn)檫@其中的“關(guān)系”,指的是數(shù)據(jù)元素之間的邏輯關(guān)系,因此數(shù)據(jù)結(jié)構(gòu)又稱(chēng)為數(shù)據(jù)的邏輯結(jié)構(gòu)。而相對(duì)于邏輯結(jié)構(gòu)這個(gè)比較抽象的概念,我們將數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示又稱(chēng)為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第7頁(yè)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第7頁(yè)。選擇合理的邏輯結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第8頁(yè)。數(shù)據(jù)的邏輯結(jié)構(gòu)是指同一數(shù)據(jù)元素類(lèi)中各數(shù)據(jù)元素之間存在的關(guān)系。數(shù)據(jù)結(jié)構(gòu)分別為邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)(物理結(jié)構(gòu))和數(shù)據(jù)的運(yùn)算。數(shù)據(jù)的邏輯結(jié)構(gòu)是對(duì)數(shù)據(jù)之間關(guān)系的描述,有時(shí)就把邏輯結(jié)構(gòu)簡(jiǎn)稱(chēng)為數(shù)據(jù)結(jié)構(gòu)。邏輯結(jié)構(gòu)形式地定義為(K,R)(或(D,S)),其中,K是數(shù)據(jù)元素的有限集,R是K上的關(guān)系的有限集。數(shù)據(jù)元素相互之間的關(guān)系稱(chēng)為結(jié)構(gòu)。有四類(lèi)基本結(jié)構(gòu):集合、線(xiàn)性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)、圖狀結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))。樹(shù)形結(jié)構(gòu)和圖形結(jié)構(gòu)全稱(chēng)為非線(xiàn)性結(jié)構(gòu)。集合結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一種類(lèi)型外,別無(wú)其它關(guān)系。線(xiàn)性結(jié)構(gòu)中元素之間存在一對(duì)一關(guān)系,樹(shù)形結(jié)構(gòu)中元素之間存在一對(duì)多關(guān)系,圖形結(jié)構(gòu)中元素之間存在多對(duì)多關(guān)系。在圖形結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)數(shù)和后續(xù)結(jié)點(diǎn)數(shù)可以任意多個(gè)。數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示(映像)稱(chēng)為數(shù)據(jù)的物理(存儲(chǔ))結(jié)構(gòu)。它包括數(shù)據(jù)元素的表示和關(guān)系的表示。數(shù)據(jù)元素之間的關(guān)系有兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。順序存儲(chǔ)方法:它是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置相鄰的存儲(chǔ)單元里,結(jié)點(diǎn)間的邏輯關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來(lái)體現(xiàn),由此得到的存儲(chǔ)表示稱(chēng)為順序存儲(chǔ)結(jié)構(gòu)。順序存儲(chǔ)結(jié)構(gòu)是一種最基本的存儲(chǔ)表示方法,通常借助于程序設(shè)計(jì)語(yǔ)言中的數(shù)組來(lái)實(shí)現(xiàn)。鏈接存儲(chǔ)方法:它不要求邏輯上相鄰的結(jié)點(diǎn)在物理位置上亦相鄰,結(jié)點(diǎn)間的邏輯關(guān)系是由附加的指針字段表示的。由此得到的存儲(chǔ)表示稱(chēng)為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)通常借助于程序設(shè)計(jì)語(yǔ)言中的指針類(lèi)型來(lái)實(shí)現(xiàn)。索引存儲(chǔ)方法:除建立存儲(chǔ)結(jié)點(diǎn)信息外,還建立附加的索引表來(lái)標(biāo)識(shí)結(jié)點(diǎn)的地址。散列存儲(chǔ)方法:就是根據(jù)結(jié)點(diǎn)的關(guān)鍵字直接計(jì)算出該結(jié)點(diǎn)的存儲(chǔ)地址。數(shù)據(jù)結(jié)構(gòu)中,邏輯上(邏輯結(jié)構(gòu):數(shù)據(jù)元素之間的邏輯關(guān)系)可以把數(shù)據(jù)結(jié)構(gòu)分成線(xiàn)性結(jié)構(gòu)和非線(xiàn)性結(jié)構(gòu)。線(xiàn)性結(jié)構(gòu)的順序存儲(chǔ)結(jié)構(gòu)是一種隨機(jī)存取的存儲(chǔ)結(jié)構(gòu),線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是一種順序存取的存儲(chǔ)結(jié)構(gòu)。線(xiàn)性表若采用鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第8頁(yè)。在程序設(shè)計(jì)中,邏輯結(jié)構(gòu)的選用就是要分析題目中的數(shù)據(jù)元素之間的關(guān)系,并根據(jù)這些特定關(guān)系來(lái)選用合適的邏輯結(jié)構(gòu)以實(shí)現(xiàn)對(duì)問(wèn)題的數(shù)學(xué)描述,進(jìn)一步解決問(wèn)題。邏輯結(jié)構(gòu)實(shí)際上是用數(shù)學(xué)的方法來(lái)描述問(wèn)題中所涉及的操作對(duì)象及對(duì)象之間的關(guān)系,將操作對(duì)象抽象為數(shù)學(xué)元素,將對(duì)象之間的復(fù)雜關(guān)系用數(shù)學(xué)語(yǔ)言描述出來(lái)。根據(jù)數(shù)據(jù)元素之間關(guān)系的不同特性,通常有以下四種基本邏輯結(jié)構(gòu):集合、線(xiàn)性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)、圖狀(網(wǎng)狀)結(jié)構(gòu)。這四種結(jié)構(gòu)中,除了集合中的數(shù)據(jù)元素之間只有“同屬于一個(gè)集合”的關(guān)系外,其它三種結(jié)構(gòu)數(shù)據(jù)元素之間分別為“一對(duì)一”、“一對(duì)多”、“多對(duì)多”的關(guān)系。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第9頁(yè)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第9頁(yè)。我們應(yīng)采用怎樣的標(biāo)準(zhǔn)對(duì)邏輯結(jié)構(gòu)進(jìn)行選擇呢?下文將探討選擇合理邏輯結(jié)構(gòu)應(yīng)充分考慮的兩個(gè)因素。一、充分利用“可直接使用”的信息。首先,我們這里所講的“信息”,指的是元素與元素之間的關(guān)系。對(duì)于待處理的信息,大致可分為“可直接使用”和“不可直接使用”兩類(lèi)。對(duì)于“可直接使用”的信息,我們使用時(shí)十分方便,只需直接拿來(lái)就可以了。而對(duì)于“不可直接使用”的這一類(lèi),我們也可以通過(guò)某些間接的方式,使之成為可以使用的信息,但其中轉(zhuǎn)化的過(guò)程顯然是比較浪費(fèi)時(shí)間的。由此可見(jiàn),我們所需要的是盡量多的“可直接使用”的信息。這樣的信息越多,算法的效率就會(huì)越高。對(duì)于不同的邏輯結(jié)構(gòu),其包含的信息是不同的,算法對(duì)信息的利用也會(huì)出現(xiàn)不同的復(fù)雜程度。因此,要使算法能夠充分利用“可直接使用”的信息,而避免數(shù)據(jù)結(jié)構(gòu)在程序設(shè)計(jì)中的應(yīng)用算法在信息由“不可直接使用”向“可直接使用”的轉(zhuǎn)化過(guò)程中浪費(fèi)過(guò)多的時(shí)間,我們必然需要采用一種合理的邏輯結(jié)構(gòu),使其包含更多“可直接使用”的信息。二、不記錄“無(wú)用”信息。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第10頁(yè)。信息都“可用”自然是好事,但倘若其中“無(wú)用”數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第10頁(yè)。選擇合理的存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn)是借助元素在存儲(chǔ)器中的相對(duì)位置來(lái)表示數(shù)據(jù)元素之間的邏輯關(guān)系;鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)則是借助指示元素存儲(chǔ)地址的指針表示數(shù)據(jù)元素之間的邏輯關(guān)系。此時(shí),我們?nèi)舨捎庙樞虼鎯?chǔ)結(jié)構(gòu),就會(huì)使用一個(gè)n×n的二維數(shù)組,將所有數(shù)據(jù)元素全部記錄下來(lái);若采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),則需要使用一個(gè)包含m個(gè)結(jié)點(diǎn)的鏈表,記錄所有非0的m個(gè)數(shù)據(jù)元素。由這樣兩種不同的記錄方式,我們可以通過(guò)對(duì)數(shù)據(jù)的不同操作來(lái)分析它們的優(yōu)點(diǎn)和缺點(diǎn)。1、合理采用順序存儲(chǔ)結(jié)構(gòu)。我們?cè)谄匠W鲱}時(shí),大多都是使用順序存儲(chǔ)結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。究其原因,一方面是出于順序結(jié)構(gòu)操作方便的考慮,另一方面是在程序?qū)崿F(xiàn)的過(guò)程中,使用順序結(jié)構(gòu)相對(duì)于鏈?zhǔn)浇Y(jié)構(gòu)更便于對(duì)程序進(jìn)行調(diào)試和查找錯(cuò)誤。因此,大多數(shù)人習(xí)慣上認(rèn)為,能夠使用順序結(jié)構(gòu)進(jìn)行存儲(chǔ)的問(wèn)題,最“好”采用順序存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第11頁(yè)。其實(shí),這個(gè)所謂的“好”只是一個(gè)相對(duì)的標(biāo)準(zhǔn),是建立在以下兩個(gè)前提條件之下的:1.鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)的結(jié)點(diǎn)與順序結(jié)構(gòu)存儲(chǔ)的結(jié)點(diǎn)數(shù)目相差不大。這種情況下,由于存儲(chǔ)的結(jié)點(diǎn)數(shù)目比較接近,使用鏈?zhǔn)浇Y(jié)構(gòu)完全不能體現(xiàn)出記錄結(jié)點(diǎn)少的優(yōu)點(diǎn),并且可能會(huì)由于指針操作較慢而降低算法的效率。更有甚者,由于指針自身占用的空間較大,且結(jié)點(diǎn)數(shù)目較多,因而算法對(duì)空間的數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第11頁(yè)。2、必要時(shí)采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。上面我對(duì)使用順序存儲(chǔ)結(jié)構(gòu)的條件進(jìn)行了分析,最后就只剩下何時(shí)應(yīng)該采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的問(wèn)題了。由于鏈?zhǔn)浇Y(jié)構(gòu)中指針操作確實(shí)較繁瑣,并且速度也較慢,調(diào)試也不方便,因而大家一般都不太愿意用鏈?zhǔn)降拇鎯?chǔ)結(jié)構(gòu)。但是,這只是一般的觀點(diǎn),當(dāng)鏈?zhǔn)浇Y(jié)構(gòu)確實(shí)對(duì)算法有很大改進(jìn)時(shí),我們還是不得不進(jìn)行考慮的。算法優(yōu)化上文所探討的,都是如何對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行選擇,其中包含了邏輯結(jié)構(gòu)的選擇和存儲(chǔ)結(jié)構(gòu)的選擇,是一種具有較大普遍性的算法優(yōu)化方法。對(duì)于多數(shù)的問(wèn)題,我們都可以通過(guò)選擇一種合理的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)以達(dá)到優(yōu)化算法的目的。但是,有些問(wèn)題卻往往不如人愿,要對(duì)這類(lèi)問(wèn)題的數(shù)據(jù)結(jié)構(gòu)進(jìn)行選擇,常常會(huì)顧此失彼,有時(shí)甚至根本就不存在某一種合適的數(shù)據(jù)結(jié)構(gòu)。此時(shí),我們是無(wú)法選擇出某一種合適的數(shù)據(jù)結(jié)構(gòu)的,以上的方法就有些不太適用了。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第12頁(yè)。為解決數(shù)據(jù)結(jié)構(gòu)難以選擇的問(wèn)題,我們可以采用將多種數(shù)據(jù)結(jié)構(gòu)進(jìn)行結(jié)合的方法。通過(guò)多種數(shù)據(jù)結(jié)構(gòu)相結(jié)合,達(dá)到取長(zhǎng)補(bǔ)短的作用,使不同的數(shù)據(jù)結(jié)構(gòu)在算法中發(fā)揮出各自的優(yōu)勢(shì)。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第12頁(yè)。實(shí)例分析:隱藏的碼字〖問(wèn)題描述〗問(wèn)題中給出了一些碼字和一個(gè)文本,要求編程找出文本中包含這些碼字的所有項(xiàng)目,并將找出的項(xiàng)目組成一個(gè)最優(yōu)的“答案”,使得答案中各項(xiàng)目所包含的碼字長(zhǎng)度總和最大。每一個(gè)項(xiàng)目包括一個(gè)碼字,以及該碼字在文本中的一個(gè)覆蓋序列(如’abaca’就是碼字’abac’的一個(gè)覆蓋序列),并且覆蓋序列的長(zhǎng)度不超過(guò)1000。同時(shí),“答案”要求其中每個(gè)項(xiàng)目的覆蓋序列互相沒(méi)有重疊?!紗?wèn)題分析〗對(duì)于此題,一種較容易得出的基本算法是:對(duì)覆蓋序列在文本中的終止位置進(jìn)行循環(huán),再判斷包含了哪些碼字,找出所有項(xiàng)目,并最后使用動(dòng)態(tài)規(guī)劃的方法將項(xiàng)目組成最優(yōu)的“答案”。算法的其它方面我們暫且不做考慮,而先對(duì)問(wèn)題所采用的邏輯結(jié)構(gòu)進(jìn)行選擇。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第13頁(yè)。如果我們采用線(xiàn)性的邏輯結(jié)構(gòu)(如循環(huán)隊(duì)列),那么我們?cè)谂袛嗍欠癜硞€(gè)碼字t時(shí),所用的方法為:初始時(shí)用指針p指向終止位置,接著通過(guò)p的不斷前移,依次找出碼字t從尾到頭的各個(gè)字母。例如碼字為“ABDCAB”,而文本圖1-1,終止位置為最右邊的箭頭符號(hào),每個(gè)箭頭代表依次找到的碼字的各個(gè)字母。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第13頁(yè)。由于題目規(guī)定碼字的覆蓋序列長(zhǎng)度不超過(guò)1000,所以進(jìn)行這樣的一次是否包含的判斷,其復(fù)雜度為O(1000)。由于碼字t中相鄰兩字母在文本中的位置,并非只有相鄰(如圖1-1中的’D’和’C’)這一種關(guān)系,中間還可能間隔了許多的字母(如圖1-1中’C’和’A’就間隔了2個(gè)字母),而線(xiàn)性結(jié)構(gòu)中擁有的信息,僅僅只存在于相鄰的兩元素之間。通過(guò)這樣簡(jiǎn)單的信息來(lái)尋找碼字的某一個(gè)字母,其效率顯然不高。如果我們建立一個(gè)有向圖,其中頂點(diǎn)i(即文本的第i位)用52條弧分別連接’a’..’z’,’A’..’Z’這52個(gè)字母在i位以前最后出現(xiàn)的位置(如圖1-2的連接方式),我們要尋找碼字中某個(gè)字母的前一個(gè)字母,就可以直接利用已連接的邊,而不需用枚舉的方法。我們也可以把問(wèn)題看為:從有向圖的一個(gè)頂點(diǎn)出發(fā),尋找一條長(zhǎng)度為length(t)-1的路徑,并且路徑中經(jīng)過(guò)的頂點(diǎn),按照碼字t中的字母有序。數(shù)據(jù)結(jié)構(gòu)應(yīng)用論文全文共16頁(yè),當(dāng)前為第14頁(yè)。通過(guò)計(jì)算,用圖進(jìn)行記錄在空間上完全可以承受(記錄1000個(gè)點(diǎn)×52條弧×4字節(jié)的長(zhǎng)整型=200k左右)。在時(shí)間上,由于可以充分利用第i位和第i+1位弧的連接方式變化不大這一點(diǎn)(如圖1-2所示,第i位和
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)2024-2025學(xué)年度教學(xué)計(jì)劃
- 長(zhǎng)沙環(huán)境保護(hù)職業(yè)技術(shù)學(xué)院《天線(xiàn)理論與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南交通運(yùn)輸職業(yè)學(xué)院《工程軟件應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 業(yè)務(wù)操作-房地產(chǎn)經(jīng)紀(jì)人《業(yè)務(wù)操作》深度自測(cè)卷2
- 人教版三年級(jí)下冊(cè)數(shù)學(xué)第四單元筆算乘法同步練習(xí)(含答案)
- 四川省綿陽(yáng)市綿陽(yáng)中學(xué)2024-2025學(xué)年高一上學(xué)期1月選拔測(cè)試(期末)數(shù)學(xué)試題(含答案)
- 二零二五年建筑外墻保溫材料研發(fā)與市場(chǎng)分析合作協(xié)議3篇
- 二零二五版地產(chǎn)項(xiàng)目可持續(xù)發(fā)展策劃與管理合同3篇
- 二零二五版房屋買(mǎi)賣(mài)合同貸款服務(wù)協(xié)議書(shū)3篇
- 二零二五年度煤炭買(mǎi)賣(mài)合同書(shū)2篇
- GB/T 38914-2020車(chē)用質(zhì)子交換膜燃料電池堆使用壽命測(cè)試評(píng)價(jià)方法
- 顧客滿(mǎn)意度評(píng)價(jià)表范文
- 細(xì)胞骨架(細(xì)胞生物學(xué))課件
- 電磁閥培訓(xùn)(精選)課件
- A彌漫大b細(xì)胞淋巴瘤護(hù)理查房
- 維保移交協(xié)議范本
- 初一上學(xué)期期末測(cè)試卷英語(yǔ)
- 上海沃陸變頻器VL600型變頻器說(shuō)明書(shū)概要
- 2023年高考物理一輪復(fù)習(xí):拋體運(yùn)動(dòng)與圓周運(yùn)動(dòng)(附答案解析)
- VRV空調(diào)技術(shù)要求和質(zhì)量標(biāo)準(zhǔn)
- 第二講VSP地震勘探
評(píng)論
0/150
提交評(píng)論