




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(29)教師:鮑鈺ybao@4/21/20231.Chapter11MULTIWAYTREES4/21/20232.Tries:
LexicographicSearchTrees
P531DEFINITIONAtrieofordermiseitheremptyorconsistsofanorderedsequenceofexactlymtriesoforderm.4/21/20233.4/21/20234.C++TrieDeclarationsEveryRecordhasaKeythatisanalphanumericstring.Methodcharkey_letter(intposition)returnsthecharacterinthegivenpositionofthekeyorreturnsaNONE,ifthekeyhaslengthlessthanposition.Auxiliaryfunctionintalphabetic_order(charsymbol)returnsthealphabeticpositionofthecharactersymbol,or27fornonblank,nonalphabeticcharacters,or0forblank,NONEcharacters.4/21/20235.Trie--Key#include"String.h"#include"iostream.h"constintkey_size=10;classKey{ charstr[key_size];public: Key(chars[]); char*the_key()const; charkey_letter(intposition)const;};4/21/20236.Trie--Key#include"Key.h"Key::Key(chars[]){ for(inti=0;i<=strlen(s);i++) str[i]=s[i];}char*Key::the_key()const{ return(char*)str;}charKey::key_letter(intposition)const{ if(position<strlen(str))returnstr[position]; elsereturn'\0';}4/21/20237.Trie--Record#include"Key.h"classRecord{public: operatorKey();//implicitconversionfromRecordtoKey. Record(chars[]=""); char*the_key()const; charkey_letter(intposition)const;private: charstr[key_size];};ostream&operator<<(ostream&output,Record&x);4/21/20238.Trie--Record#include"Record.h"Record::Record(chars[]){ for(inti=0;i<=strlen(s);i++) str[i]=s[i];}Record::operatorKey(){ Keytmp(str);}4/21/20239.Trie--RecordcharRecord::key_letter(intposition)const{ if(position<strlen(str))returnstr[position]; elsereturn'\0';}char*Record::the_key()const{ return(char*)str;}ostream&operator<<(ostream&output,Record&x){ output<<x.the_key(); output<<""; returnoutput;}4/21/202310.Trie—Trie_node#include"Record.h"constintnum_chars=28;structTrie_node{//datamembers Record*data; Trie_node*branch[num_chars];//constructors Trie_node();};4/21/202311.Trie—Trie_node#include"Trie_node.h"Trie_node::Trie_node(){ data=NULL; for(inti=0;i<num_chars;i++) branch[i]=NULL;}4/21/202312.Trie#include"Trie_node.h"enumError_code{not_present,overflow,underflow,duplicate_error,success};classTrie{public://Addmethodprototypeshere. Error_codeinsert(constRecord&new_entry); Error_codetrie_search(constKey&target,Record&x)const; Trie();private://datamembers Trie_node*root;};intalphabetic_order(charc);4/21/202313.Trie#include"Trie.h"intalphabetic_order(charc)/*Post:Thefunctionreturnsthealphabeticpositionofcharacterc,oritreturns0ifthecharacterisblank.*/{ if(c==''||c=='\0')return0; if('a'<=c&&c<='z')returnc-'a'+1; if('A'<=c&&c<='Z')returnc-'A'+1; return27;}Trie::Trie(){ root=NULL;}4/21/202314.TrieError_codeTrie::insert(constRecord&new_entry)/*Post:IftheKeyofnew_entryisalreadyintheTrie,acodeofduplicate_errorisreturned.Otherwise,acodeofsuccessisreturnedandtheRecordnewentryisinsertedintotheTrie.Uses:MethodsofclassesRecordandTrie_node.*/{ Error_coderesult=success; if(root==NULL)root=newTrie_node;//CreateanewemptyTrie. intposition=0;//indexeslettersofnewentry charnext_char; Trie_node*location=root;//movesthroughtheTrie while(location!=NULL&& (next_char=new_entry.key_letter(position))!='\0'){ intnext_position=alphabetic_order(next_char); if(location->branch[next_position]==NULL) location->branch[next_position]=newTrie_node; location=location->branch[next_position]; position++; }//Atthispoint,wehavetestedforallnonblankcharactersofnewentry. if(location->data!=NULL)result=duplicate_error; elselocation->data=newRecord(new_entry); returnresult;}4/21/202315.TrieError_codeTrie::trie_search(constKey&target,Record&x)const/*Post:Ifthesearchissuccessful,acodeofsuccessisreturned,andtheoutputparameterxissetasacopyoftheTrie'srecordthatholdstarget.Otherwise,acodeofnot_presentisreturned.Uses:MethodsofclassKey.*/{ intposition=0; charnext_char; Trie_node*location=root; while(location!=NULL&& (next_char=target.key_letter(position))!='\0'){ //TerminatesearchforaNULLlocationorablankinthetarget. location=location->branch[alphabetic_order(next_char)]; //Movedowntheappropriatebranchofthetrie. position++; //Movetothenextcharacterofthetarget. } if(location!=NULL&&location->data!=NULL){ x=*(location->data); returnsuccess; } else returnnot_present;}4/21/202316.Main#include"Trie.h"voidmain(){ Triedict; dict.insert(Record("a")); dict.insert(Record("aa")); dict.insert(Record("ab")); dict.insert(Record("ac")); dict.insert(Record("aba")); dict.insert(Record("abc")); dict.insert(Record("abba")); dict.insert(Record("abaca"));
dict.insert(Record("baba")); dict.insert(Record("baa")); dict.insert(Record("bab")); dict.insert(Record("bac")); dict.insert(Record("ba")); dict.insert(Record("b"));4/21/202317.Main dict.insert(Record("caaba")); dict.insert(Record("ca")); dict.insert(Record("c")); dict.insert(Record("ca")); dict.insert(Record("cab")
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025遼寧興城市人民醫(yī)院、中醫(yī)醫(yī)院招聘急需緊缺人才37人模擬試卷及答案詳解(易錯題)
- 衡水市人民醫(yī)院B超儀器規(guī)范操作考核
- 2025廣東中山市三鄉(xiāng)鎮(zhèn)社區(qū)衛(wèi)生服務(wù)中心招聘聘用制醫(yī)務(wù)人員3人考前自測高頻考點(diǎn)模擬試題附答案詳解(完整版)
- 2025湖北荊州市石首市第二批校園招聘教師6人考前自測高頻考點(diǎn)模擬試題及完整答案詳解
- 2025中心醫(yī)院護(hù)理物資與高值耗材精細(xì)化管理試題
- 唐山市人民醫(yī)院牙拔除術(shù)操作資格認(rèn)證
- 衡水市中醫(yī)院泌尿系統(tǒng)疾病編碼考核
- 2025兒童醫(yī)院脊柱畸形后路截骨矯形技術(shù)準(zhǔn)入考核
- 邢臺市中醫(yī)院骨關(guān)節(jié)炎階梯化治療考核
- 衡水市人民醫(yī)院學(xué)科空間規(guī)劃考核
- 2025至2030年中國洗護(hù)用品行業(yè)市場行情監(jiān)測及前景戰(zhàn)略研判報告
- 腫瘤中心建設(shè)匯報
- 無人機(jī)操控與維護(hù)專業(yè)教學(xué)標(biāo)準(zhǔn)(中等職業(yè)教育)2025修訂
- 十五五護(hù)理工作發(fā)展規(guī)劃
- 消防宣傳安全常識課件
- 2025年內(nèi)蒙古鄂爾多斯市國源礦業(yè)開發(fā)有限責(zé)任公司招聘筆試參考題庫含答案解析
- 2025年廣州市越秀區(qū)九年級中考語文一模試卷附答案解析
- GB/T 1040.1-2025塑料拉伸性能的測定第1部分:總則
- 學(xué)校食堂食品安全風(fēng)險管控清單
- DB54/T 0316-2024藏香生產(chǎn)技術(shù)規(guī)程
- 電力行業(yè)職業(yè)健康衛(wèi)生管理制度
評論
0/150
提交評論