C语言基础教程课件(英文版)ch13_第1页
C语言基础教程课件(英文版)ch13_第2页
C语言基础教程课件(英文版)ch13_第3页
C语言基础教程课件(英文版)ch13_第4页
C语言基础教程课件(英文版)ch13_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AFirstBookofANSIC

FourthEditionChapter13DynamicDataStructuresAFirstBookofANSIC,FourthEdition2ObjectivesIntroductiontoLinkedListsDynamicMemoryAllocationStacksQueuesDynamicallyLinkedListsCommonProgrammingandCompilerErrorsAFirstBookofANSIC,FourthEdition3IntroductionDynamicmemoryallocation:analternativetofixedmemoryallocationinwhichmemoryspacegrowsordiminishesduringprogramexecutionDynamicmemoryallocation

makesitunnecessarytoreserveafixedamountofmemoryforascalar,array,orstructurevariableinadvanceAlsoknownasrun-timeallocationRequestsaremadeforallocationandreleaseofmemoryspacewhiletheprogramisrunningAFirstBookofANSIC,FourthEdition4IntroductiontoLinkedListsAnarrayofstructurescanbeusedtoinsertanddeleteorderedstructures,butthisisnotanefficientuseofmemoryBetteralternative:alinkedlistLinkedlist:setofstructures,eachcontainingatleastonememberwhosevalueistheaddressofthenextlogicallyorderedstructureinthelistAlsoknownasself-referencingstructuresAFirstBookofANSIC,FourthEdition5IntroductiontoLinkedLists(continued)AFirstBookofANSIC,FourthEdition6IntroductiontoLinkedLists(continued)AFirstBookofANSIC,FourthEdition7IntroductiontoLinkedLists(continued)ANULLactsasasentinelorflagtoindicatewhenthelaststructurehasbeenprocessedInadditiontoanend-of-listsentinelvalue,wemustprovideaspecialpointerforstoringtheaddressofthefirststructureinthelistAFirstBookofANSIC,FourthEdition8IntroductiontoLinkedLists(continued)AFirstBookofANSIC,FourthEdition9IntroductiontoLinkedLists(continued)AFirstBookofANSIC,FourthEdition10Astructurecancontainanydatatype,includingapointer.Apointermemberofastructureisusedlikeanyotherpointervariable.IntroductiontoLinkedLists(continued)AFirstBookofANSIC,FourthEdition11isevaluatedas(t1.nextaddr)->nameitcanbereplacedby(*t1.nextaddr).nameIntroductiontoLinkedLists(continued)AFirstBookofANSIC,FourthEdition12IntroductiontoLinkedLists(continued)AFirstBookofANSIC,FourthEdition13IntroductiontoLinkedLists(continued)Disadvantage:exactlythreestructuresaredefinedinmain()byname,andstorageforthemisreservedatcompiletimeAFirstBookofANSIC,FourthEdition14IntroductiontoLinkedLists(continued)canbereplacedbywhile(!contents)AFirstBookofANSIC,FourthEdition15DynamicMemoryAllocationAFirstBookofANSIC,FourthEdition16DynamicMemoryAllocation(continued)Themalloc()andcalloc()functionscanfrequentlybeusedinterchangeablyTheadvantageofcalloc()isthatitinitializesallnewlyallocatednumericmemoryto0andcharacterallocatedmemorytoNULLWeusemalloc()becauseitisthemoregeneralpurposeofthetwofunctionsmalloc(10*sizeof(char))orcalloc(10,sizeof(char))requestsenoughmemorytostore10charactersThespaceallocatedbymalloc()comesfromthecomputer’sheapAFirstBookofANSIC,FourthEdition17…Necessarybecausemalloc()returnsvoidDynamicMemoryAllocation(continued)AFirstBookofANSIC,FourthEdition18DynamicMemoryAllocation(continued)malloc()ismoretypicallyusedfordynamicallyallocatingmemoryforstructuresstructOfficeInfo*Off;/*requestspaceforonestructure*/Off=(structOfficeInfo*)malloc(sizeof(structOfficeInfo));/*checkthatspacewasallocated*/if(Off==(structOfficeInfo*)NULL){printf("\nAllocationfailed\n");exit(1);}AFirstBookofANSIC,FourthEdition19StacksStack:specialtypeoflinkedlistinwhichobjectscanonlybeaddedtoandremovedfromthetopofthelistLast-in,first-out(LIFO)listInatruestack,theonlyitemthatcanbeseenandaccessedisthetopitemAFirstBookofANSIC,FourthEdition20Stacks(continued)AFirstBookofANSIC,FourthEdition21StackImplementationCreatingastackrequiresthefollowingfourcomponents:AstructuredefinitionAmethodofdesignatingthecurrenttopstackstructureAnoperationforplacinganewstructureonthestackAnoperationforremovingastructurefromthestackAFirstBookofANSIC,FourthEdition22PUSHandPOPPUSH(addanewstructuretothestack)DynamicallycreateanewstructurePuttheaddressinthetop-of-stackpointerintotheaddressfieldofthenewstructureFillintheremainingfieldsofthenewstructurePuttheaddressofthenewstructureintothetop-of-stackpointerPOP(removeastructurefromthetopofthestack)Movethestructurecontentspointedtobythetop-of-stackpointerintoaworkareaFreethestructurepointedtobythetop-of-stackpointerMovetheaddressintheworkareaaddressfieldintothetop-of-stackpointerAFirstBookofANSIC,FourthEdition23PUSHandPOP(continued)AFirstBookofANSIC,FourthEdition24PUSHandPOP(continued)AFirstBookofANSIC,FourthEdition25PUSHandPOP(continued)AFirstBookofANSIC,FourthEdition26PUSHandPOP(continued)AFirstBookofANSIC,FourthEdition27PUSHandPOP(continued)AsamplerunusingProgram13.5producedthefollowing:Enterasmanynamesasyouwish,oneperlineTostopenteringnames,enterasinglexEnteraname:JaneJonesEnteraname:BillSmithEnteraname:JimRobinsonEnteraname:xThenamespoppedfromthestackare:JimRobinsonBillSmithJaneJonesAFirstBookofANSIC,FourthEdition28QueuesAsecondimportantdatastructurethatreliesonlinkedstructuresiscalledaqueueItemsareremovedfromaqueueintheorderinwhichtheywereenteredItisafirstin,firstout(FIFO)structureAFirstBookofANSIC,FourthEdition29Queues(continued)AFirstBookofANSIC,FourthEdition30Queues(continued)AFirstBookofANSIC,FourthEdition31EnqueandServeEnqueueing:placinganewitemontopofthequeueServing:removinganitemfromaqueueAFirstBookofANSIC,FourthEdition32EnqueandServe(continued)AFirstBookofANSIC,FourthEdition33EnqueandServe(continued)Enqueue(addanewstructuretoanexistingqueue)DynamicallycreateanewastructureSettheaddressfieldofthenewstructuretoaNULLFillintheremainingfieldsofthenewstructureSettheaddressfieldofthepriorstructure(whichispointedtobythequeueInpointer)totheaddressofthenewlycreatedstructureUpdatetheaddressinthequeueInpointerwiththeaddressofthenewlycreatedstructureAFirstBookofANSIC,FourthEdition34EnqueandServe(continued)AFirstBookofANSIC,FourthEdition35EnqueandServe(continued)Serve(removeastructurefromanexistingqueue)MovethecontentsofthestructurepointedtobythequeueOutpointerintoaworkareaFreethestructurepointedtobythequeueOutpointerMovetheaddressintheworkareaaddressfieldintothequeueOutpointerAFirstBookofANSIC,FourthEdition36EnqueandServe(continued)AFirstBookofANSIC,FourthEdition37EnqueandServe(continued)AFirstBookofANSIC,FourthEdition38EnqueandServe(continued)AFirstBookofANSIC,FourthEdition39EnqueandServe(continued)AFirstBookofANSIC,FourthEdition40EnqueandServe(continued)AFirstBookofANSIC,FourthEdition41EnqueandServe(continued)AsamplerunusingProgram13.6producedthefollowing:Enterasmanynamesasyouwish,oneperlineTostopenteringnames,enterasinglexEnteraname:JaneJonesEnteraname:BillSmithEnteraname:JimRobinsonEnteraname:xThenamesservedfromthequeueare:JaneJonesBillSmithJimRobinsonAFirstBookofANSIC,FourthEdition42DynamicallyLinkedListsBothstacksandqueuesareexamplesoflinkedlistsinwhichelementscanonlybeaddedtoandremovedfromtheendsofthelistInadynamicallylinkedlist,thiscapabilityisextendedtopermitaddingordeletingastructurefromanywherewithinthelistSuchacapabilityisextremelyusefulwhenstructuresmustbekeptwithinaspecifiedorderAFirstBookofANSIC,FourthEdition43INSERTandDELETEKeyfieldAFirstBookofANSIC,FourthEdition44INSERTandDELETE(continued)INSERT(addanewstructureintoalinkedlist)DynamicallyallocatespaceforanewstructureIfnostructuresexistinthelistSettheaddressfieldofthenewstructuretoaNULLSetaddressinthefirststructurepointertoaddressofnewlycreatedstructureElse/*weareworkingwithanexistinglist*/LocatewherethisnewstructureshouldbeplacedIfthisstructureshouldbethenewfirststructureinthelistCopycurrentcontentsoffirststructurepointerintoaddressfieldofnewlycreatedstructureSetaddressinthefirststructurepointertoaddressofnewlycreatedstructureElseCopytheaddressinthepriorstructure’saddressmemberintotheaddressfieldofthenewlycreatedstructureSetaddressofpriorstructure’saddressmembertoaddressofnewlycreatedstructureEndIfEndIfAFirstBookofANSIC,FourthEdition45INSERTandDELETE(continued)AFirstBookofANSIC,FourthEdition46INSERTandDELETE(continued)LINEARLOCATIONforINSERTINGaNEWSTRUCTUREIfthekeyfieldofthenewstructureislessthanthefirststructure’skeyfieldthenewstructureshouldbethenewfirststructureElseWhiletherearestillmorestructuresinthelistComparethenewstructure’skeyvaluetoeachstructurekeyStopthecomparisonwhenthenewstructurekeyeitherfallsbetweentwoexistingstructuresorbelongsattheendoftheexistinglistEndWhileEndIfAFirstBookofANSIC,FourthEdition47SeeSlide50SeeSlide50INSERTandDELETE(continued)AFirstBookofANSIC,FourthEdition48INSERTandDELETE(continued)AFirstBookofANSIC,FourthEdition49INSERTandDELETE(continued)AFirstBookofANSIC,FourthEdition50...(codeforinsert()andlocate()goeshere)…INSERTandDELETE(continued)AFirstBookofANSIC,FourthEdition51INSERTandDELETE(continued)Thefollowingsamplerunshowstheresultsofthesetests:Enterasmanynamesasyouwish,oneperlineTostopenteringnames,enterasinglexEnteraname:BinstockEnteraname:ArnoldEnteraname:DuberryEnteraname:CarterEnteraname:xThenamescurrentlyinthelist,inalphabeticalorder,are:ArnoldBinstockCarterDuberryAFirstBookofANSIC,FourthEdition52CommonProgrammingErrorsNotcheckingthereturncodesprovidedbymalloc()andrealloc()Notcorrectlyupdatingallrelevantpointeraddresseswhenaddingorremovingstructuresfromdynamicallycreatedstacks,queues,andlinkedlistsForgettingtofreepreviouslyallocatedmemoryspacewhenthespaceisnolongerneededAFirstBookofANSIC,FourthEdition53CommonProgrammingErrors(continued)Notpreservingtheintegrityoftheaddressescontainedinthetop-of-stackpointer,queue-in,queue-out,andlistpointerwhendealingwithastack,queue,anddynamicallylinked

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论