cosc 220: data structures in c++ · pop: à remove from top of stack e.g. nested func=on call: last...
TRANSCRIPT
COSC220:DataStructuresinC++DataStructures:QueueClass
Thisweek(week8):Queue,Map,andSetdatastructureswillbediscussedMakesuretheSta=cStanfordLibrariesareworkingonyourcomputer!!Wegot4workingin1officehourlastFriday!HW#3onlineWeds
COSC220:DataStructuresinC++ReviewoftheCompila=onProcess:
Sourcefile Objectfile
Libraryfile
Executablefile
compiler
linker
1.Sourcefile:textofyourcode2.Compileràtranslatesourcetoobjectfile3.Objectfile:machine-languageinstructs4.ObjectfilecombinedwithotherobjectfilesviaLinkeràExecutablefile5.Otherobjectfiles:predefinedobjfilescalledlibraries6.Libraries:containmachine-langinstructsforvariousopera=onsreq’dbyprogram7.Linking:combiningobjectfilesintoanexecutable
COSC220:DataStructuresinC++DataStructures:QueueClass
TheQueueClassCounterparttoStackClass.FIFO:firstinfirstoutStackàLIFOStack:pushàaddtotopofstackpop:àremovefromtopofstacke.g.nestedfunc=oncall:lastfunc=oncalledisfirsttoreturnQueuecounterparttoStack
enqueueàaddelementtoendofqueuedequeueàremoveelementfromfrontofqueue
COSC220:DataStructuresinC++DataStructures:QueueClassQueueClass:
enqueueàaddelementtoendofqueuedequeueàremoveelementfromfrontofqueue
COSC220:DataStructuresinC++DataStructures:QueueClass
TheQueueClass
COSC220:DataStructuresinC++DataStructures:QueueClassTheQueueClassusefulinsimula=ons:
àwai=nginlinemodelingàtrafficmodeling:carfollowingandcarsaccelera=onfromlight,seemath354ClassExercise1:writeafunc=onthatreversesaqueue.Keepinmindyoucannotseeanyinternalrep’nofthequeue
voidreverseQueue(Queue<int>&queue);
COSC220:DataStructuresinC++DataStructures:QueueClassTheQueueClassusefulinsimula=ons:
-wai=nginlinemodeling-trafficmodeling:carfollowingandcarsaccelera=onfromlight,seemath354ClassExercise1:writeafunc=onthatreversesaqueue.Keepinmindyoucannotseeanyinternalrep’nofthequeuevoidreverseQueue(Queue<int>&queue){intqSize=queue.size();Stack<int>stack;for(inti=0;i<qSize;i++){stack.push(queue.dequeue());}for(inti=0;i<qSize;i++){queue.enqueue(stack.pop());}}
COSC220:DataStructuresinC++DataStructures:QueueClass
Writeafunc=onisPalindromethatreturnsbooleanbasedonifaphraseisapalindromeornotusingboththestackandqueueclasses.
boolisPalindrome(stringstr);
COSC220:DataStructuresinC++DataStructures:QueueClass
Writeafunc=onisPalindromethatreturnsbooleanbasedonifaphraseisapalindromeornotusingboththestackandqueueclasses.
boolisPalindrome(stringstr){Queue<char>queue;Stack<char>stack;longintn=str.length();//methodlengthforclassstringfor(inti=0;i<n;i++){queue.enqueue(str[i]);stack.push(str[i]);}for(inti=0;i<n/2;i++){if(queue.dequeue()!=stack.pop())returnfalse;
//notecompareFIFOtoLIFO}returntrue;}
COSC220:DataStructuresinC++DataStructures:MapClass
TheMapClassAssocia=vearraysClosestthingtoadic=onaryseeninPythonAssocia=onbetweenakeyandvaluemaps:some=mescalledsymboltablesconstructor:Map<keytype,valuetype>mapAssocia=vearrays:map[key]=value;sameas:map.put(key,value);
COSC220:DataStructuresinC++DataStructures:MapClass
COSC220:DataStructuresinC++DataStructures:MapClass
SeeAirportCodes.cpp(www.fredpark.com/teaching)1. airportcodeandairportinfowillbekeyvaluepair
2.Classexercise,joinapartnerandthinkaboutaninteres=ngapplica=onusingthemapclass.Writepseudocodeandthenimplementit.
COSC220:DataStructuresinC++DataStructures:MapClass
TheMapClassAssocia=vearraysClosestthingtoadic=onaryseeninPythonAssocia=onbetweenakeyandvaluemaps:some=mescalledsymboltablesconstructor:Map<keytype,valuetype>mapAssocia=vearrays:map[key]=value;sameas:map.put(key,value);
COSC220:DataStructuresinC++DataStructures:SetClass
TheSetClassModelsthemathema=calabstrac=onofasetThisisanunorderedcollec=onofelementsoccurringonlyonceLotsofalgorithmicapplica=ons.
COSC220:DataStructuresinC++DataStructures:SetClassTheSetClass
COSC220:DataStructuresinC++DataStructures:SetClass
Scrabbleoraspellchecker:canuseasettostorethewordssincedefini=onsarenotneededSetofwordswithnoassociateddefini=onsiscalledalexiconAsetbasedimplementa=onfromafilelookslike:
Set<string>lexicon;ifstreaminfile;infile.open("EnglishWords.txt");if(infile.fail())error("Can'topenEnglishWords.txt");while(true){stringword;getline(infile,word);if(infile.fail())break;lexicon.add(word);}infile.close();
COSC220:DataStructuresinC++DataStructures:lexiconclass
Setofwordswithnoassociateddefini=onsiscalledalexiconSetbasedimplementa=onisusefulbutnotefficient.Uselexiconclass.Load“EnglishWords.dat”containsreasonablycompletelistofEnglishwords.
Lexiconenglish("EnglishWords.dat");//lexiconclass
COSC220:DataStructuresinC++DataStructures:lexiconclass
COSC220:DataStructuresinC++Itera=ngoveracollec=on
C++11àcandoarangebasedforloop
for(typevariable:collection){bodyofloop
}
example:iteratethroughallwordsinEnglishlexiconandselectonlythosewithtwolekers:for(stringword:english){
if(word.length()==2){ cout<<word<<endl;}
}
colonoperator“:”isamechanismcalledaniterator