首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語(yǔ) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 托福 | 雅思 | 專(zhuān)四專(zhuān)八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語(yǔ) | 成人英語(yǔ)三級(jí) | 申碩英語(yǔ) | 攻碩英語(yǔ) | 職稱日語(yǔ) | 日語(yǔ)學(xué)習(xí) | 法語(yǔ) | 德語(yǔ) | 韓語(yǔ)
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問(wèn) | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷(xiāo)員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書(shū)資格 | 心理咨詢師考試 | 出版專(zhuān)業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語(yǔ)學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員資料 > 正文

2006年軟考程序員數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)筆記

數(shù)據(jù)就是指能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息的載體。
  數(shù)據(jù)元素是數(shù)據(jù)的基本單位,有時(shí)一個(gè)數(shù)據(jù)元素可以由若干個(gè)數(shù)據(jù)項(xiàng)組成。數(shù)據(jù)項(xiàng)是具有獨(dú)立含義的最小標(biāo)識(shí)單位。如整數(shù)這個(gè)集合中,10這個(gè)數(shù)就可稱是一個(gè)數(shù)據(jù)元素.又比如在一個(gè)數(shù)據(jù)庫(kù)(關(guān)系式數(shù)據(jù)庫(kù))中,一個(gè)記錄可稱為一個(gè)數(shù)據(jù)元素,而這個(gè)元素中的某一字段就是一個(gè)數(shù)據(jù)項(xiàng)。
  數(shù)據(jù)結(jié)構(gòu)的定義雖然沒(méi)有標(biāo)準(zhǔn),但是它包括以下三方面內(nèi)容:邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)、和對(duì)數(shù)據(jù)的操作。這一段比較重要,我用自己的語(yǔ)言來(lái)說(shuō)明一下,大家看看是不是這樣。 
 比如一個(gè)表(數(shù)據(jù)庫(kù)),我們就稱它為一個(gè)數(shù)據(jù)結(jié)構(gòu),它由很多記錄(數(shù)據(jù)元素)組成,每個(gè)元素又包括很多字段(數(shù)據(jù)項(xiàng))組成。那么這張表的邏輯結(jié)構(gòu)是怎么樣的呢? 我們分析數(shù)據(jù)結(jié)構(gòu)都是從結(jié)點(diǎn)(其實(shí)也就是元素、記錄、頂點(diǎn),雖然在各種情況下所用名字不同,但說(shuō)的是同一個(gè)東東)之間的關(guān)系來(lái)分析的,對(duì)于這個(gè)表中的任一個(gè)記錄(結(jié)點(diǎn)),它只有一個(gè)直接前趨,只有一個(gè)直接后繼(前趨后繼就是前相鄰后相鄰的意思),整個(gè)表只有一個(gè)開(kāi)始結(jié)點(diǎn)和一個(gè)終端結(jié)點(diǎn),那我們知道了這些關(guān)系就能明白這個(gè)表的邏輯結(jié)構(gòu)了。 
  而存儲(chǔ)結(jié)構(gòu)則是指用計(jì)算機(jī)語(yǔ)言如何表示結(jié)點(diǎn)之間的這種關(guān)系。如上面的表,在計(jì)算機(jī)語(yǔ)言中描述為連續(xù)存放在一片內(nèi)存單元中,還是隨機(jī)的存放在內(nèi)存中再用指針把它們鏈接在一起,這兩種表示法就成為兩種不同的存儲(chǔ)結(jié)構(gòu)。(注意,在本課程里,我們只在高級(jí)語(yǔ)言的層次上討論存儲(chǔ)結(jié)構(gòu)。) 
  第三個(gè)概念就是對(duì)數(shù)據(jù)的運(yùn)算,比如一張表格,我們需要進(jìn)行查找,增加,修改,刪除記錄等工作,而怎么樣才能進(jìn)行這樣的操作呢? 這也就是數(shù)據(jù)的運(yùn)算,它不僅僅是加減乘除這些算術(shù)運(yùn)算了,在數(shù)據(jù)結(jié)構(gòu)中,這些運(yùn)算常常涉及算法問(wèn)題。
  弄清了以上三個(gè)問(wèn)題,就可以弄清數(shù)據(jù)結(jié)構(gòu)這個(gè)概念。

(答案及點(diǎn)評(píng)) 3.4 設(shè)長(zhǎng)度為n的鏈隊(duì)用單循環(huán)鏈表表示,若設(shè)頭指針,則入隊(duì)出隊(duì)操作的時(shí)間為何? 若只設(shè)尾指針呢? 


3.4答:當(dāng)只設(shè)頭指針時(shí),出隊(duì)的時(shí)間為1,而入隊(duì)的時(shí)間需要n,因?yàn)槊看稳腙?duì)均需從頭指針開(kāi)始查找,找到最后一個(gè)元素時(shí)方可進(jìn)行入隊(duì)操作。若只設(shè)尾指針,則出入隊(duì)時(shí)間均為1。因?yàn)槭茄h(huán)鏈表,尾指針?biāo)傅南乱粋(gè)元素就是頭指針?biāo)冈,所以出?duì)時(shí)不需要遍歷整個(gè)隊(duì)列。
第四章:串(包括習(xí)題與答案及要點(diǎn))

轉(zhuǎn)摘www.Ezikao.com

--------------------------------------------------------------------------------
本章介紹了串的邏輯結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu)及串上的基本運(yùn)算,由于在高級(jí)語(yǔ)言中已經(jīng)提供了較全善的串處理功能,因此本章的重點(diǎn)是掌握在串上實(shí)現(xiàn)的模式匹配算法。同時(shí)這也是本章的難點(diǎn)。但是從全書(shū)來(lái)講,這屬于較簡(jiǎn)單的一章內(nèi)容。 

--------------------------------------------------------------------------------
1.串及其運(yùn)算(領(lǐng)會(huì))(這些內(nèi)容比較容易理解,不用死記)
串就是字符串,是一種特殊的線性表,它的每個(gè)結(jié)點(diǎn)僅由一個(gè)字符組成。
空串:是指長(zhǎng)度為零的串,也就是串中不包含任何字符(結(jié)點(diǎn))。
空白串:指串中包含一個(gè)或多個(gè)空格字符的串。不同與空串,它的結(jié)點(diǎn)就是一個(gè)空格字符。
在一個(gè)串中任意個(gè)連續(xù)字符組成的子序列稱為該串的子串,包含子串的串就稱為主串。子串在主串中的序號(hào)就是指子串在主串中首次出現(xiàn)的位置。如A="I love you" B="love",則B在A中的序號(hào)為3,注意空格也是字符。
空串是任意串的子串,任意串是他自身的子串。
串分為兩種:串常量和串變量。串常量在程序中不能改變,串變量則可以。
關(guān)于串的基本運(yùn)算,基本上在C語(yǔ)言中已經(jīng)學(xué)過(guò),主要有
求串長(zhǎng)strlen(char *s)、
串復(fù)制strcpy(char *to,char *from)、
串聯(lián)接strcat(char *to,char *from)、
串比較charcmp(char *s1,char *s2)
和字符定位strchr(char *s, char c)等
這些基本運(yùn)算通過(guò)練習(xí)來(lái)掌握。

--------------------------------------------------------------------------------
2.串的存儲(chǔ)結(jié)構(gòu)(簡(jiǎn)單應(yīng)用)
串是特殊的線性表(結(jié)點(diǎn)是字符),所以串的存儲(chǔ)結(jié)構(gòu)與線性表的存儲(chǔ)結(jié)構(gòu)類(lèi)似。
串的順序存儲(chǔ)結(jié)構(gòu)簡(jiǎn)稱為順序串,順序串又可按存儲(chǔ)分配的不同分為靜態(tài)存儲(chǔ)分配的順序串和動(dòng)態(tài)存儲(chǔ)分配的順序串。
靜態(tài)的意思可簡(jiǎn)單地理解為一個(gè)確定的存儲(chǔ)空間,它的長(zhǎng)度是不可變的。如直接使用定長(zhǎng)的字符數(shù)組來(lái)定義一個(gè)串。它的優(yōu)點(diǎn)是涉及串長(zhǎng)的操作速度快,因?yàn)樗淖畲箝L(zhǎng)度是不變的。
動(dòng)態(tài)存儲(chǔ)分配就是在定義串時(shí)不分配存儲(chǔ)空間,直到需要使用時(shí)按所需串的長(zhǎng)度分配存儲(chǔ)單元給它,并且在運(yùn)行中還可以根據(jù)需要變化串的長(zhǎng)度,這就是動(dòng)態(tài)分配。不過(guò)這樣的串仍是順序存儲(chǔ)的,也就是說(shuō)指針指向串的首地址,后面的結(jié)點(diǎn)是連續(xù)存儲(chǔ)的。
串的鏈?zhǔn)酱鎯?chǔ)就是用單鏈表的方式存儲(chǔ)串值,串的這種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)簡(jiǎn)稱為鏈串。鏈串與單鏈表的差異只是它的結(jié)點(diǎn)數(shù)據(jù)域?yàn)閱蝹(gè)字符。這種存儲(chǔ)結(jié)構(gòu)方便于串的插入和刪除操作,但是空間利用率不高,因?yàn)榇娣琶恳粋(gè)字符要"搭配"一個(gè)指向下一字符的地址,而地址所占空間是比較大的。為了解決這種"存儲(chǔ)密度"過(guò)低的狀況,可以讓一個(gè)結(jié)點(diǎn)存儲(chǔ)多個(gè)字符,事實(shí)上這是順序串和鏈串的綜合(折衷)。

--------------------------------------------------------------------------------
本章的重點(diǎn)和難點(diǎn)就是串運(yùn)算的實(shí)現(xiàn),特別是順序串上子串定位的運(yùn)算。
子串定位運(yùn)算又稱串的"模式匹配"或"串匹配",就是在主串中查找出子串出現(xiàn)的位置,這在應(yīng)用中非常廣泛,比如文本編輯中的"查找和替換"用到的就是子串定位運(yùn)算的算法。
在串匹配中,將主串稱為目標(biāo)(串),子串稱為模式(串),我們這樣想象,子串就如同一個(gè)模板(樣本),用它在目標(biāo)上對(duì)比,從頭往后比較,凡是遇到一模一樣的那么一段,就算找到一個(gè)位置了(我們就說(shuō),從這個(gè)位置開(kāi)始的匹配成功)。用很專(zhuān)業(yè)的很酷的話說(shuō)就是"模式在目標(biāo)中出現(xiàn)"(我想起了警匪片里的對(duì)話),如果這個(gè)模板對(duì)應(yīng)的目標(biāo)串中有不一樣的字符出現(xiàn),那么這個(gè)位置就匹配失敗。
當(dāng)我們用這個(gè)模子依次從目標(biāo)的頭部往后移,移動(dòng)到的位置就叫位移,如果每次向右移動(dòng)1格,那么每次的位移就加上1。
每次移動(dòng)后要看看模板里的字符和目標(biāo)中相應(yīng)的字符是否相等,如果都相同,這次位移就叫有效位移(其實(shí)就是從這個(gè)位置開(kāi)始的匹配成功)
另外有一個(gè)合法位移和不合法位移的概念,就是說(shuō),移動(dòng)一個(gè)位置后,如果模板的最后一個(gè)字符還沒(méi)有超出目標(biāo)串中最后一個(gè)字符時(shí),這個(gè)位移就是合法位移,如果超出了,那么就沒(méi)有比較的意義了,這時(shí)就是不合法位移。
這是比較容易理解的,串匹配問(wèn)題就是找出給定模式串P在給定目標(biāo)串T中首次出現(xiàn)的有效位移或者是全部有效位移。
具體的串匹配算法也不是很難理解,就是用兩個(gè)循環(huán),外循環(huán)用于進(jìn)行模式的位移,內(nèi)循環(huán)進(jìn)行模板內(nèi)每個(gè)字符的比較(判斷是否有效位移)。關(guān)于串匹配的時(shí)間復(fù)雜度,在最壞的情況下就是目標(biāo)串和模式串分別是"a^n-1b"和"a^m-1b"的形式,就是說(shuō),每一次合法位移后,在內(nèi)循環(huán)中都要比較m個(gè)字符才知道是不是有效位移(前面的字符都是一樣的)。所以最壞的情況下時(shí)間復(fù)雜度是O((n-m+1)m),假如m與n同階的話則它是O(n^2)。

上一頁(yè)  1 2 3 4 5 6 7 8 9 10 下一頁(yè)
文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。