




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商家赠品管理办法
- 商超库存管理办法
- 嘉善编外管理办法
- 团员处分管理办法
- 团歌制作管理办法
- 园本研修管理办法
- 固定流程管理办法
- 国企文印管理办法
- 国债期货管理办法
- 国税会议管理办法
- 建筑工程雨季施工防汛措施
- 《化妆品配方师》学习化妆原料配伍与禁忌填充剂、着色剂、防晒剂理论重点知识(含职业技能等级证书高级考试题)
- 片剂2片剂常用辅料
- 新建三座钢结构人行天桥监理规划
- 新版城市居住区规划设计规范
- 供应商往来对账确认函(财务文书模板)
- GB/T 778.1-2018饮用冷水水表和热水水表第1部分:计量要求和技术要求
- GB/T 6725-2017冷弯型钢通用技术要求
- 2022年泰安市文化和旅游系统事业单位招聘笔试试题及答案
- ISO9001新产品研发控制程序
- 防台风、暴雨应急预案
评论
0/150
提交评论