数据的组织结构二高级语言程序设计课件北京工业大学_第1页
数据的组织结构二高级语言程序设计课件北京工业大学_第2页
数据的组织结构二高级语言程序设计课件北京工业大学_第3页
数据的组织结构二高级语言程序设计课件北京工业大学_第4页
数据的组织结构二高级语言程序设计课件北京工业大学_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

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

文档简介

第6讲数据的组织结构(二)一、结构体二、指针和引用三、动态申请存储空间四、不同类型的函数参数总结五、链表六、文件七、联合体与枚举类型

一、结构体如何表示多个不同类型的数据项,这些数据项逻辑上构成一个数据元素?如:每个学生都有学号、姓名每本书都有书号、书名、作者、出版社用结构体类型来表示。struct<结构体类型名>{ <数据类型><成员1>; <数据类型><成员1>;…… <数据类型><成员n>;};structpoint{ intx;inty;};structstudent{ intsNum;charname[10];};结构体类型声明声明的是数据类型,不是变量!pointp1,p2;//对比:inti,j;studentzhang,wang;定义时初始化pointp1={1,1};studentzhang={1,"张一"};结构体类型变量定义p1p1p111zhang1张一整型大小10个字符大小结构体类型变量的成员变量的引用<结构体变量名>.<成员名>p1.xp1.yzhang.sN即看成普通变量使用scanf("%d%d",&p1.x,&p1.y);scanf("%s",);printf("%s",);p1.x=1;="张一";同一结构体类型变量可以赋值pointp1={1,2},p2;p2=p1;等同于:p2.x=p1.x;p2.y=p1.y;例:学生基本信息的组织学生信息:学号、姓名、出生日期、所属院系、专业完成任务键盘输入30个学生的信息、并屏幕输出;键盘输入月份和日期,查找并输出本年度在给定日期之后过生日的学生信息例:学生基本信息的组织设计数据结构:每个学生基本信息用结构体描述学号intnum;姓名charname[24];出生日期自定义一个结构:年、月、日所属院系chardepartment[48];专业charmajor[32];structDate{ /*日期结构*/ intyear;intmonth;intday;};structStudentInfo{ /*学生信息结构*/intnum;charname[24];Datebirthday;chardepartment[48];charmajor[32];};数据类型的别名用户可以为已有的数据类型起别名语法:typedef

原数据类型新的数据类型名例如:typedefintxuehao;思考这样做的好处?程序更加清晰易懂日期Date和学生信息StudentInfo结构的另一种定义方式:typedefstruct{ /*日期结构*/ intyear;intmonth;intday;}Date;typedefstruct{ /*学生信息结构*/intnum;charname[24];Datebirthday;chardepartment[48];charmajor[32];}StudentInfo;30名学生用数组表示#defineNUM30StudentInfos[NUM];程序结构设计给出每个函数的定义,包括:功能说明,入口参数,出口参数等。主模块main()输入模块inputIofo()查询处理模块searchInfo()输出模块outputInfo输入模块voidinputInfo(StudentInfo[]);功能:将全部学生信息通过键盘输入到StudentInfo[]数组。参数:学生信息数组。返回值:没有。输出模块voidoutputInfo(StudentInfo[]);功能:格式化输出StudentInfo[]数组中的全部学生信息。参数:学生信息数组。返回值:没有。查询处理模块voidsearchInfo(StudentInfo[],DATE);功能:查找并输出StudentInfo[]数组中,DATE之后过生日的学生信息。参数:学生信息数组。查找关键字:Date返回值:没有。依据定义设计函数的流程,编写代码。编写主模块函数的代码。看书P170,程序代码。分析书中设计的优缺点?结构敢体应竹用例翅题P1纱72,键单盘输勇入10个整孟数,耗将它湾们从衫小到缸大重寸新排由序,陕要求动输出问排序蠢后的揪结果雀和排找序前林的位植置数据赞结构用结臭构体炸类型损将整备数和溪原始视位置茶绑在割一起ty沾pe股de搏fst窑ru缘瑞ct{in脱tda招ta赔;渴/士*整型类数值爪*/in近tpo刚s;高/仓*原始将位置晕*/}D汇AT兆AT搅YP俱E;算法输入浮:针载对本菠次任菌务修跪改输出轨:针丙对本或次任莲务修锹改排序石:用恼以前活的函尺数例:抹模拟燥发扑趋克牌数据津结构一张萌扑克谢牌的蚁表示一副裂扑克搭牌的多表示算法初始席化一秆副扑殿克牌洗牌发牌P1厘75二、餐指针指针嘱类型悠变量训的定吸义<数据稿类型>讽*仿<指针霸类型肤变量尼名>in赴t*in答tp舟tr;ch伍ar摆*ch承pt揭r;in艰tp下tr0x浓00置12隶ff感78一个席地址荷大小ch机pt稀r0x巡寿00授12膏ff文70一个锄地址冬大小指针巡寿是变般量是地购址变宰量指针策类型替变量犯的引廉用in昼t*in病tp示tr;ch订ar城*ch佣pt朗r;in术ti谅=数0;ch晓ar慨c盒=谱‘盖a’;in谋tp以tr=&i;健//今i的地币址赋徐给in则tp豪trch盖pt罚r=&c;贵//发c的地优址赋欲给ch垦pt递rin益tp某tr0x忧00筐12恒ff案780x在00柔12店ff练78ch屡pt校r0x龄00目12赔ff评700x息00逮12困ff纯700ain腔t*in惠tp椒tr;ch及ar险*ch鞋pt猫r;in沙ti肥=厅0;ch片ar奋c祖=胡‘糠a’;in普tp梳tr=棚&i乐;ch姜pt版r=掌&c勉;ci指针仿变量毕所指纸的值*in执tp虏tr=妇30惨;在格蛮式化递输入训输出援中的逗应用pr逢in斯tf屑(“捧%d,什%c酿”,*in肃tp壶tr,传*ch垄pt吼r);sc镜an漂f(惭“%盾d%往c”,in匪tp偶tr,ch攻pt使r);in虚tp绒tr30in桐tp亿tr急1in嘱tp蔑tr推2NU捆LL指针踪蝶变量佣可初喊始化草为空劫指针in培t仪*信in燃tp缺tr将1自=斤&i袖;in繁t印*腐in维tp纸tr院2损=NU肯LL;指针播赋值in营tp取tr梳2农=杨in驰tp胜tr很1;i指针司比较if盈(in飞tp温tr伐2杨==挡i戏nt荒pt耻r1)…if雅(in露tp选tr祸2骄==NU问LL)…if亡(担!in抓tp貌tr离2)…指针蚁加减in年t*艰p华=窝da壳ta昼;衡/辉/p指向da出ta吃[0绢];即:&d租at毙a[钓0]p+府+;寄//并p指向da颗ta强[1腿];p讨=聪p+件2;爽/风/p指向da欲ta坦[3零];p递=刺p-龙2;域/捞/p指向da逼ta甲[1锯];p蓄=骄p+巡寿12息;界/纷/成为bu闪g;0旅1采2旦3戴4功5邮6走7肌8源9da牧tain污tda册ta间[1准0];例ch织ar逃*st担rc挪hr色(c受ha释r*s,婶ch即arc)函数确定演某个可字符厅在字扒符串段中出逆现的揪位置s是字暂符串评,c要找姐的字挂符st场rc梅hr函数湾返回努指向猛找到科的字熊符的透指针用此赴函数舱获取袍指定袄字符涨在字退符串寸中的监位置歇数目ch极ar障s插[]堂="召12引36来.8夜7"描;in痒tp;p按=纷st狠rc扬hr欠(s在,'昂.'鸣)-上s+启1;pr般in纱tf("位置纹在:%d\测n"熟,p);st瓦rc锦hr函数闪返回麻指针盼,指颜针相聪减定另位位皂置例#i维nc瞧lu傻de绒"st寸di野o.鱼h"#i东nc土lu或de罢"st脏ri续ng芳.h"in刘tma成in汁(i陕ntar遣gc,慎ch担ar再*ar绪gv[]鉴){ch管ar槐b波[]关=神"果Go蔬od缓by颠e"呀;ch监ar膜*pb=全&b堤[7半];wh届il侍e(填-蹈-pb>=角&勉b[殊0]悔)pu敲tc编ha坏r(*pb);pu或tc悄ha乳r(盖'\英n')巴;re刷tu馒rn摔0围;}逆序为什贪么指清针变图量也惠要有托类型螺?指针夫变量讲所存互地址剂没有愈区别但对督指针如变量顽所存停地址绢指向患的数睁据的补操作颈不同(不弄同数参据集泉合上室定义锻的操汗作不餐同,浆如:恐指针标加1的操斧作)指针产可指洁向各辟种数叼据类辨型,晨如基从本类贴型、算数组乒、函洪数、案对象驰、指些针等指针搁与数剃组数组债名是葵指向潮数组松第1个元层素的贸指针份,但雷这个鬼指针盛是常量;ch扁ar紫s秤tr虾[]腿=楚{淡"p辛ro邻gr龟am理"}乏;pr获in绣tf思(“基%c阻\n昏”,虎*熟st屋r)蹈;只//打印ppr模in后tf末(“津%c驻\n什”,艳*目++宇st塞r)滋;森//错pr废in究tf馋(“竖%c话\n帆”,奋*晌(1剪+s撤tr对))渗;糟//对ch研ar外*柏p;存p苦=s姥tr谁;pr裁in滩tf握(“颤%c押\n蜜”,沿*迹++神p)秘;势//打印r指针抚与数之组数组殊名定购位数茎组元喉素P1朗84图6-说14指针击定位胶数组乒元素P1伪84图6-怕15利用性指针件对数蓬组元剖素进特行操赚作in款tia没rr叠ay阴[2扔0]傻;in陕t*pt叼r;//方法半一fo视r(pt腿r=ia溪rr武ay叨,i=0震;酱i<叙20肌;负i+兔+伍)pr予in宵tf跪(“管%d”,章*关(pt段r+霉i)俩);//方法显二fo饮r(pt棍r=ia遭rr兰ay;pt吨r<i捕ar去ra愿y+援20曾;pt疤r++危)pr绵in须tf本(“洒%d”,桌*pt阀r);例6-欢4须P1眉85指针症数组涂例子//打印晓整型拍数组嫌指定规的行园。j:行孤号(0开始序),ro安wD:行长愈度,p:指向泳数组幕第一恶个元讲素的孝指针vo宿idpr恰_r井ow跑(i韵ntj,in懒tro享wD,in恐t*p抢){in按ti;p好=吵p隆+泻(添j*ro磁wD)溉;fo肆r(志i妇=0贿;永i<ro参wD;扒i+泳+灾)pr惠in敲tf姐(“写%d”,香*恒(p+社i)跃);}二维限数组膀与一于维指党针数范组in亮ta[鞠3]批[2宇];a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[淹0]a[岩0]a[咬1]a[慌2]二维糖数组革与一望维指抵针数拼组in嫌ta[兴3]秋[2叠];a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[孝0]a[泰1]a[蓄2]a[及0]盖,a[液1]济,壁a[著2],一席维数还组的拥首地慎址,梳是指截针。用指温针定招位二攀维数递组元赤素:i代表饿行,j代表角列in酱t*pt裤r=a满[0闹];恼元素测:怕*(pt犁r+蔽i*列数+励j)例:P1撇87#d盖ef掉in据e促RO自WN鸦UM盟5#d笼ef作in减e鸭CO垮LN哀UM铸4in醒ta[珍RO秘WN冤UM开][宴CO止LN沈UM]灯;in挤t*p翻tr沟1鸦;pt兰r1膨=嫌a须[0酸];fo岗r(裂i耽=0互;之i<用RO资WN妻UM盏;壁i+归+辟)卫{fo索r(阁j撒=0解;沸j<冷CO财LN直UM芬;株j+饥+辟)pr费in拘tf窜("衬%3滋d暮",搂*辣(p就tr模1+雷i*CO冬LN蚁UM奶+j)俭);pr迹in尼tf分("受\n")赞;}可替谷换:pt误r1陆=改&蝇a[率0]热[0里];pt掘r1暴=趁(in械t*)悲a候;例:P1薯87in贝t(*这pt拿r2毙)[CO鹿LNU链M]娘;pt递r2跑=亦&典a[酱0]医;傅/忍/a[表0]是指栽针,象可以进:pt匠r2尽=披a旁;fo雨r(郊i结=0浓;司i<奶RO商WN比UM兴;阀i+冈+伯)费{fo涂r(遣j蓄=0木;史j<栗CO租LN鬼UM叼;惧j+恩+裤)pr填in鱼tf企("北%3扑d湖",窗*办(妥*(仗pt住r2腰+i傻)+柔j)胖)差;pr肉in卸tf笋("扯\n")估;}书错in即t(*意pt哑r2芦)[咸CO舞LN陆UM搜];与in材t*p瞎tr拌2[阳CO秆LN渠UM廉];区别in萌t*p冶tr装2[萍CO仁LN识UM介];//是整喉型指那针的忧数组in忠t(*乡丰pt迫r2娘)[夫CO扬LN联UM忙];//指向订整型嗓指针盟的指资针数恒组指针妻数组in定ta[祝10拣];in丙t*突b[止3]伸;b[甘0]杜=伍&然a[强0]欺;fo孔r(胁i辫=0秆;讯i<伙10怀;垒i+说+熔)pr就in导tf锅("蜻%3岛d勺",窗*众(柳b[族0]称+i袋)扯);b是一桂个指右向指滥针的蓝指针馋。0无1岂2玩3率4崇5隶6健7擦8爽9ab书学妇习书P1驰88,例6-诞5指向庄指针魂的指这针变俭量fl前oa摊t圾*仰*兄p;地址p地址值ma枯in雨()角{in腾tx,立*娇p,**q;x笑=流0洋;p伟=限&x敏;q沙=喊&p期;pr珠in丧tf跳("横%d",闸**岁q丘);//打印x的值}指针黑与字述符串字符理数组绸名是开字符浆数组迁首地傻址,碑字符许串需鹿要有昼字符乖串结宾束符闭。ch颈ar文n单am丙e[零10筋]额=节"zh乱an步g";ch分ar坛*ch灿pt煌r=岛na鲁me毁;pr客in撕tf话("宪%s",鹊n暂am慕e)太;pr维in第tf林("垮%s",ch乒pt逃r);指针族与字争符串早例子库函的数st体rc馅mp()in缝tst柜rc掀mp披(c流ha赛r*s驻1,麻c寺ha猜r若*制s2湿){wh刘il硬e单(雁*s耽1至)贤/蛮/直到s1字符与串结咱尾才fa印ls少eif闸(粥*市s1头-地*竹s链2渡)re锦tu第rn娇*翁s1住-变*岸s遵2翁;el里se岸{s1抵++遣;威s渔2+但+;臭}re否tu送rn播0虫;}例子奴:找拜出程逼序的哀错误ma层in独(){ch讯ar跌*血p,川s绣[8堵0]兴;p匆=悼s;do毫{ge崖ts锯(胆s隆);wh假il尺e凭(*芦p)pr核in热tf碰(“灿%c”,扇*扇p+葱+)根;}县wh购il道e深(st色rc声mp(怜s,塑“聋do罗ne发”)鸣)穿;}例子菊:正致确答蔬案ma型in扣(){ch约ar响*请p,晶s咏[8编0]演;do灶{p顺=谨s;ge佣ts即(债s武);wh挪il吴e池(*该p)pr寒in存tf乎("写%c",破*蔑p+揉+)勉;}洽wh斯il趋e桑(st肾rc垦mp(诱s,读"液do原ne蛾")果)流;}指向勾结构沸体变芦量的汇指针定义st词ru篮ctSt骡ud恋en院t哪{in服tnu睡mb佣er绢;ch厉ar悄*田ne笋xt普;};使用St阅ud强en鄙tzh醉an晌g,惭*p怀;zh猎an挑g=饭{1班,”中zh奋an化gb昌o”挺};p搞=偏&zh伴an疗g;pr柱in痛tf珍("庆%d",何p钩->艘nu际mb柄er退);//等价骂:pr食in垮tf竭("动%d",zh样an农g.态nu碗mb挂er);例:尘选举雄问题选举病问题士:某创部门袖,需泄要由绿全体萍员工捕推选裁一名页办公朴室主京任。径假设怖有10名候慢选人招。编厚程序月依据乖每个烫候选泉人的睁得票涉数量葬,得挪票最问多当脂选,霉给出掠选举援结果旷包括璃候选国人编止号和纽奉得票惠数。定义近结构劫体:st奥ru涌ctCa案nd奥id愿at院e{in栏tnu独mb给er俗;摘/截/候选志人号领码in培tvo妻te融;肝/握/候选扎人得漫票数};in居tma橡in曲(){Ca恢nd准id管at致e曾da迹ta灶[歇NU圆M融];Ca部nd留id惭at销eMy植Se着le轿ct败ed;in右pu撒t(娃da炮ta,喂NU袜M)荒;My坟Se狭le放ct摊ed=ma修x(海da颤ta,容NU卵M)飘;ou诞tp与ut追(My废Se俗le橡ct敲ed);re虹tu区rn酸0您;}/*查找本得票揪最多遍的候天选人赚。参亡数…,返搭回值…。鸽*/Ca粘nd境id税at含ema希x(生Ca晋nd赤id座at影eva垃lu语e[台],in凤tn){in拿ti;Ca海nd降id秘at弹e陈se淋le言ct盏ed滑;se蜓le环ct拢ed屈.v腥ot苍e=对va霸lu背e[桥0]像.v表ot梦e岛;se疤le刑ct隐ed爸.n涉um校be籍r=仁va浆lu浅e[番0]唐.n砖um标be于r;fo费r(厨i套=1痛;暖i<海n;零i甚++他){if献(va俭lu修e[慰i]叉.v鲜ot深e>se吸le庭ct跑ed友.v邮ot析e)自{se勾le躲ct肯ed荡.v坟ot滚e=va父lu品e[联i]旬.v甚ot规e;se浴le蚀ct迟ed奶.n谢um雹be娘r=va认lu危e[善i]弄.n踏um欢be框r;}}re沾tu奸rn猜s若el哀ec便te尘d;}vo忌idou谱tp趋ut领(C乏an绸di尊da躬tese食le锤ct狐ed殖){pr炊in睁tf("当选桨者是%d候选宋人。版得票美数%d。\n过",se箭le崭ct迫ed袄.n逗um逗be愤r,决se南le装ct屯ed叫.v准ot跌e)顿;re莲tu谷rn输;}vo忆idin纲pu墨t(源Ca划nd驶id塞at悠eva薄lu宫e[移],in浪tn){in羞ti趣;pr比in突tf("请输的入%d个候咐选人更的号尸码:",茂n)堂;fo羡r(倒i朽=0须;贿i<终n;器i事++捐){sc岭an划f(敢"%务d",改&va档lu种e[逢i]抛.n防um胃be镰r)穷;}pr矿in逗tf("请输侧入%d个候黑选人算的得骆票数枣:",糊n)汗;fo祖r(且i剂=0斩;话i<蛋n;店i锅++奥){sc滤an除f(吸"%澡d",懒&va絮lu猾e[甲i]铜.v泻ot丛e)鄙;}}结构辨体成卸员是厉结构抵体变普量的非指针st黄ru坐ctno信de圆{in炼tda想ta快;no谣de沈*们ne雷xt倾;};no荡de播a辞,碌*p鹿;a效=耗{1侦,N渴UL蒸L}性;p怠=溜&a往;pr沉in任tf抢("蚁%d",殖p朱->由da宾ta颤);//等价孟:pr鞭in涨tf糊("煌%d",a.驼da插ta);三、普动态柜申请质存储芦空间库函萌数中削动态姻申请梳和释痛放存掌储空英间的录函数法,包茎含:st帝dl怠ib坑.hvo凶id锄*ma屈ll毙oc(in略tsi足ze匙)惑//申请vo胀id望f绑re械e(陈v腐oi俊d窗*p泰)沈//释放例:in膛t*pt掘r=(in见t*)ma矛ll据oc(si疲ze检of筋(i俘nt)*2最0滋);fr烫ee山(pt瘦r);为什叠么叫市动态陆内存好分配怨?数组螺:in带ta[播10事];渣/礼/静态值内存宵分配动态幅申请邀内存涛空间情存储孔数组in芹t*pt辞r=骂(in走t*)ma挂ll邻oc怨(s毙iz钻eo驰f(宪in敞t)*渡10谷)恳;比较糊:程序磨运行券到此姜语句汇才分饿配内塔存空志间必须翻释放注意材内存骨泄漏例6-躬6,P1币90,构磨造杨多辉三衬角形a……分析苦题目汗,设泥计数麦据结贸构一维佳整型茎指针较数组动态垦生成证整型膝数组别空间四、帐引用引用炕类型向变量定义装:in女t&a筑;食//变量祝的别述名用法想:in头t&a召;a雕=艇0;与地室址相绣关的脚运算扔符:饶*观&in太t*副p;省//声明p是一休个i爽nt技型指蓝针in吩ti扛=券0;in造t&rf=叙i;盆/枣/声明分一个锹in日t型的挪引用皂,r努f存妹in古t型迫数据煌的地榨址,//所以in丑t&rf=明0耽错,但可御以in着trf(原0第);p光=形&顷i补;pr恢in谈tf抬("突%d辉\n",翠*支p)崖;偷//指针p所指非的内虎容,*是指御针运撞算符pr抚in吉tf复("嘴%d薄\n",铁(牧*p葵)+络+挤);收/煮/指针p贴所指鸽的内隔容加荡1pr清in犬tf隐("糖%d夫\n",烫*烂p)北;pr蝇in求tf捕("毅%d沉\n",rf);迁/舰/rf恢此时迫用i的值rf++祝;杆//亚引用贪数据酷加1p=释&rf;pr商in州tf嘉("缸%d框\n",连*慢p)肃;五、都再谈值函数悦和函盐数参叹数值传显递:政变量望值做蔽函数村参数vo比id掘e裕xc师ha译ng追1(怜in笋t田x佩,in析ty){in孝ts;s=搏x;速x=变y;忧y=特s;}ma迁in冶(){in奇tt1橡=1租,层t2阴=2誓;ex诊ch普an阶ge槽1(槽t1播,t距2)辫;}Ex夸ch章an谎ge宵1中对x,y的改梦变不深影响t1,t2的值回。实骡际没短有完辱成交芦换功断能。结论廉:值奇传递堵时,旁被调啄用函窝数中新对参畏数值腊的改循变,芒不影稿响调庆用它巾的函唐数实巧参的欠值。地址逢传递鹿:指统针变挎量做胆函数忍参数vo嫩id溜e蓝xc浅ha惨ng长3(端in汁t锐*x,盘in专t*y肃){in淋ts;s=箭*x狡;貌*榆x=算*y星;忙*y赖=s伏;}ma洋in山(){in首tt1窜=1蛾,婆t2牲=2子;ex饼ch碌an搂ge揭3(扒&t论1,袖&t枣2)百;}Ex去ch记an掩ge尿3中对x,y所指呼值的仁改变炸使t1,t2的值阴发生貌改变令。完越成了景交换颂功能悠。结论絮:地瞧址传逗递时或,被挡调用壳函数精中对犹参数京值的没改变陈,将墙影响亏调用牌它的完函数攀实参蚊的值猴。引用穷变量滚做函升数参吼数vo及id才e产xc注ha悲ng疏2(捆in勉t椅&x,详in狭t&y采){in宿ts;s=贼x;垮x=订y;傻y刃=s建;}ma麦in赌(){in衰tt1碑=1蛙,窝t2奥=2具;ex患ch志an博ge棋2(爽t1妇,t尤2)河;}Ex书ch殿an外ge刃2中对x,y的改舍变使t1,t2的值侧发生研改变蹈。完成战了交啄换功妈能。结论龄:地丢址传倦递时献,被业调用应函数怠中对由参数津值的钟改变雪,将哭影响赵调用县它的吗函数辜实参俭的值俗。数组林做函浸数参过数vo宰id钥e梯xc奋ha灶ng混4(琴ch苹ar倚*a,测ch拨ar*b誓){教ch伍ar眯s屑[5边];st吵rc倦py派(s闻,a);st该rc嚼py竿(a交,b);st猴rc吼py号(b浪,s);}ma湾in轨(){ch设ar柏t讲3[愧5]倒="aa仆a";ch辉ar复t叫4[骡5]吼="bb冠b";ex挺ch颜an庆g4敬(t悟3,村t4条);}Ex揪ch扮an青ge纽奉4中对a,b的值决改变仰使t3,t4的值误发生淋改变劲。完成咽了交羽换功坚能。利用荣函数工返回碧值例弹题in汗tma填in睁(){ch身ar屋a惰;wh舰il旷e(划1)呼{sc炸an蝴f(叮"%继c"钓,&粱a);ge嫁tc瞧ha荷r()矛;if张(fu盖n(苦a)班==杆-乱1荒)桐{pr掉in横tf("出现工异常\n竖")注;br捎ea信k;}祖el锡sepr发in川tf嚷("偶%c减\n侵",易a);}陆re颠tu永rn添0莲;浪}in脂tfu语n(常ch越ar&c准){if碎(倚c>封='滑a'泽-1瞧&走&筹c<赛'z汉'){c+竹+;裕/午/处理cre纪tu计rn毒0收;}el撤sere饱tu毙rn巡寿-酒1;}指针伤型函财数函数婆的返火回值老为指功针(P吴19家9代码)ch凳ar动*st胖rs棵ub岭(c苗ha绵r*st草r,in聋tst仪ar举t,in欲tle华n){in插ti,焰n欧um射;ch创ar叨*p天;if源(st河rl觉en切(s秃tr)堵<职st毛ar井t衬)re旗tu射rn理N咱UL驰L;if债(s蓬tr金le慰n(购st撒r)欧<st秃ar密t+封le再n)nu狡m偿=st堆rl欺en灿(s移tr)熄–根st川ar膜t症;el糖senu需m趴=le仍n;p=垒(c兽ha战r*格)ma精ll略oc伸(s哑iz希eo讲f(你ch汉ar)*块(n陪um星+1榨))fo涨r(恐i=0痕;i挂<nu亲m;善i++是)*(p+越i)铲=欲*(st据r+滋st挣ar锦t+魄i);*(p+阶i)术=岁‘\陕0’位;re孝tu棵rn脑p夺;}选举肥的例捏子(初教育涝在线丧课件倘资料寄中有会完整打的例谦子)in电tma啄in横(){in森tn唯=除NU投M滤;in属t*介da喘ta代;in漆tMy肯Se写le药ct棕ed;in捎pu误t(&蚁da命ta);My奇Se弹le敏ct带ed=ma翻x(愚da腔ta,鲜n)煤;ou咐tp僚ut励(My放Se粒le翻ct唉ed);re峡tu袭rn露0甲;}in蝴tin疫pu崖t(峰in终t**介va御lu显e){in笔ti井;*v病al烛ue=(in肝t*)ma裙ll陆oc神(s村iz明eo阔f(物in缠t)*蜜NU犯M舌)独;if胁(侵!*v视al材ue)re滨tu称rn辽-谷1;//斤-1代表厘申请百存储椒空间泊失败pr怨in航tf("请输喜入%d个整税型数湾:",食N阁UM造);fo供r(虫i促=0早;赏i<哥NU培M;蹄i芹++块){sc肤an住f(满"%独d",*va施lu边e+否i)距;}re或tu晒rn宵0欣;//函数蜻成功卫返回}错误指例子简,错刃在哪割里?in汇tma奖in险(){in轿tn喊=拌NU堪M王;in场t*肠da偿ta招;in乎tMy创Se碑le停ct腊ed;in织pu睁t(d报at炉a);My段Se弃le羽ct通ed=ma触x(侄da夜ta,贴n)册;ou圾tp怖ut章(My雹Se塘le掘ct躁ed);re泼tu犬rn器0史;}in透tin竞pu仓t(脏in湖t*v率al斤ue){in语ti兰;va航lu装e=(in殃t*)ma歪ll惑oc叙(s堤iz睛eo习f(嘴in毁t)*乘NU盏M悠)寸;if肿(郑!va封lu弃e)re裂tu趟rn隔-解1;//亏-1代表顾申请留存储就空间荡失败pr驳in低tf("请输伍入%d个整钥型数平:",例N碎UM余);fo践r(奔i销=0拼;桶i<蛾NU配M;魂i启++消){sc薄an莲f(份"%欧d",va赵lu炼e+录i)够;}re辛tu伍rn霉0僻;//函数怜成功狠返回}六、潜链表目的述:练匀习指恶针,窃初识怀数据疏结构米。需要穿存储是数据择:(a惊1,a2,…a床n),使紫用怎辰样的偷数据苦结构秘?答案陡:数润组。in间tda哀ta幻玉[N];如果麻元素戒的个醉数在[1,n]之间粉动态碗变化智,甚离至可影能超叹过n,使发用怎竿样的烘数据馅结构周?答案飘:动壮态生诸成数童组。p=姥(in捆t*)ma赶ll彼oc县(s班iz巷eo扇f(庆in自t)*扇N史)为;仍然纸要确事定存妙储空烟间大筛小。使用慎链表诉结构单链刃表链表臭特点局:不必碑预知株元素腐多少相邻殿元素祸存储墓空间教不必漆连续数组胶特点睬:预知霜元素财多少珠,且累变化难不大票的连续锋的存爽储空帮间a1La2an…构建笋单链物表分退析必须得有L,称陈之为头指砖针链表任中每灰个元骑素,期称之惧为结点,每乒个结触点必球须存板储数佛据和苗指向射下一亚个结雨点的行指针最后拖一个鞭结点昼,没剧有后继,为区空指重针空的贯单链倒表暂时韵没有蛙元素构建挣单链担表基凑础a1La2an…LNU吵LL结点浓的定践义:削例如师元素糊为整赵型数材据st贞ru昆ctno蓝de{in骡tda合ta漂;no机de幻玉*佛ne照xt枣;};由此惑联想拣数据瓣处理戒操作革:循环汽开始宪:头或指针赛指向疑第一骄个元穴素循环我中:兔前驱奔指向责后继循环奇结束覆:空就指针a1La2an^…构建盖单链大表方法轻一:沿尾插逆法总是私插入雨到当陈前链需表的梅表尾诵,直孙到读额入结任束标暮志为稿止。正序然输入摄数据a1a2a3^L在此佣插入思路舱:定夸义头烈指针建立a1结点窃,赋诱头指珍针建立筋后面结飞点插入银链表卵尾vo君idCr篮ea链te另Li烂st嫁_E(永no档de庸*属L婚)//正序输入代元素肾的值捕,建跃立单饭链表L{no典de棕*尘p,讲*倦s;L堤=(no拼de*)ma卡ll套oc(si柏ze孙of指(no吉de)朝);sc逮an限f(劣("招%d",港&(黎L-亲>d着at挥a)钓)铲;L-疼>n游ex配t裕=方NU尘LL勤;说//先建培立第鞋一个哗结点p蒜=闻L家;wh贿il怪e叹(结束榴条件柿表达事式){s惭=(no器de*)ma保ll笑oc(si迁ze赴of蹈(no水de)曾);sc沉an布f(鞋("摊%d",俊&(编s-康>d脊at右a)蚕)房诚;s-狗>n姑ex追t防=偿NU筒LL捉;p-波>n富ex尤t支=老s;p界=耕s值;}}累/旋/Cr孝ea侧te谊Li注st天_E带头茅结点挡的单链表灾:为越了使荐所有培元素泡统一额处理镰方式狡,专私门加如一个头结父点带头绝结点阶的空纤链表a1a2an∧a3L….倒.∧Lvo烫idCr子ea泪te厕Li旁st舍_E(吸no葵de通*轿L讽)//正序输入鼻元素悬的值壮,建射立带象头结钩点的基单链寨表L{no果de卸*考p,邀*竿s;L割=(no草de*)ma幸ll拔oc(si腥ze耳of魄(no地de)杜);L-挠>n纯ex互t荐=枪NU遍LL畅;序//先建怜立一凝个带茶头结尼点的锁单链病表p乖=护L值;wh获il画e烂(结束老条件恒表达诊式蔽){s章=(no茅de*)ma求ll搅oc(si耻ze雁of箭(no会de)间);sc造an蹦f(踏("尊%d",耳&(绑s-逆>d赚at鸽a)时)束;s-为>n希ex辽t秧=签NU量LL鸽;p-狗>n芦ex粥t映=悄s;p凯=谊s策;}}哈/拒/Cr劣ea班te艇Li恐st己_E构建必单链妥表方法穷二:禾头插抓法该方稼法从蜘一个料空表腊开始查,重继复读比入数吹据,毛生成而新结捧点,尺将读灿入数饮据存挨放到任新结等点的胞数据蛙域中希,然狭后将少新结毁点插顷入到被当前亏链表灾的头分指针叶上,亿直到绍读入咐结束椅标志属为止袋。a1a2an∧a3L….削.在此烂插入应逆平序插尖入头结款点vo准idCr魄ea缎te款Li笛st依_L(扩no仪de瞎*驶L多)//逆序输入n个元术素的邪值,纠建立巧带头斩结点惰的单刻链表L{no波de梯*路p;L筐=(no侧de*)ma或ll洋oc(si搞ze态of狼(no久de)禾);L-绢>n俭ex双t染=艺NU挣LL叹;牵//先建必立一平个带起头结佣点的芹空的悉单链懒表fo芳r食(翻i皆=n头;源i拒>蔑0拳;右-佩-i陵){p慈=(no遮de*)ma胜ll差oc(si绪ze拖of(n次od躬e));//生成摸新结朋点sc兔an疏f(践("脱%d",贞&(怪p-田>d愁at桶a)职)框;p-剪>n涂ex疑t掉=真L-管>n砖ex哗t愿;界//插入是到表羡头L-于>n颠ex气t肚=盟p虎;}}辩/虽/cr退ea蕉te荡Li面st嘱_L体会序有头咐结点惨的好柿处例:呜计算链打表结籍点的颜个数in饥tLi荷st火Le县ng盗th(静no焦de疮*日L)窜//带头冬结点{no稍de骂*途p;p赢=债L;in熟tle父n=买0;fo紧r(姐;料p魂!=朱NU碌LL麦;扔p=漂p-技>n供ex去t)le访n++粪;re遭tu川rnle擦n;}a1a2an∧a3L….境.插入狡链表舅结点在第i个元贿素前丢插入满一个永新元梨素x首先畅找到ai-摩1的存通储位沸置p生成缓一个牙数据惨域为x的新厘结点详*s插入侨过程先做听:s-跳>n鞋ex获t=庭p-绳>n围ex朱t再做樱:p-领>n致ex捡t=串s5353xPPSai-饶1ai12in训tLi倚st践In岗se督rt勇_L卵(n六od饼e*L榴,in酿ti,in谊tx)含{no效de评*买s,灶*较p=殃L;in状tj=馋0;wh鸣il恒e(朋p员&桌&名j<绸i开-1测)忽/拢/注意陶是两概个条冷件{p犬=p要->忌ne露xt耻;胞++浅j;鹅}罢/喜/寻找划第i-缩慧1结点if窃(来!荡p辟||坐j超>i朗-1城)re坟tu汤rn好-裹1;六//羞i小于1或大浑于(胃表长+1)s=疗(n眠od赢e*勿)ma拍ll略oc井(s盗iz窑eo苏f(唉no阅de))态;某//生成盒新结撒点s-部>d方at悠a=吓x;s-长>n诵ex梯t=汁p-灰>n脊ex坡t;p-轮>n废ex脏t=察s;re饲tu民rn度0孤;}∧anaia1a2ai-1xL删除气链表肉结点删除鸦运算妹是将疯表的臣第i个结恭点删悠去。思路首先秧找到ai抓-1的存佛储位绸置pq=惊p-帐>n讨ex世t,为废处理相被删哥除结峰点做毯准备删除钻操作撤:p-增>n尺ex也t=迫q-园>n凉ex咸t处理q所指滔结点ai-1a1aiai+1Lpqin腿tLi秧st常De局le映te猎_L闪(n僻od坦e*L,雄in众ti,in溉t&e){no阵de嫂*识q,也*挨p=蛮L;in相tj=钞0;wh遵il拐e(陶p夸->劣ne康xt殊&誓&沉j<贞i-接1){税p=圈p-营>n茫ex咬t;妹+拥+j召;刚}追//寻找佩第i-扑1结点if驻(疯!脾(p镜->妇ne管xt携)必||闷j桶>i我-1虑)re谷tu柔rn误-据1;塑/胡/删除铸位置随不合眠理q=挽p-久>n历ex毙t绪;墓p辨->驰ne垂xt钻=q间->摘ne押xt旺;e仿=溉q-报>d拐at音a殃;迈//参数世带回谦被删团数值fr纸ee串(q);re掏tu练rn敞0撕;}例6-倍9,P2弹03,约镇瑟夫川环数据使用滩没有层头结赠点的辽循环紧单链办表每个咬结点锐数据弟:每娱个人刷的序棉号。烦当然忽有指烤向下洗一个蹲结点皂的指那针。功能建造贴循环酬链表游戏膜的过铺程打印危输出掀序列筹(一冷边游佛戏一耗边打疾印?烂将结雷果保寸存之凑后一眠起打阵印?序)例6-予10,P2团06,学酸生考逮试成铸绩处冬理数据学生表信息钥采用透数组确,是俩结构蓬体数泛组,木每个责数组拼元素秃有数睁据:众学生阻姓名休,指往向成固绩链包的指辱针。学生牵选修产每门糊课程邀和成宗绩,姑一个圾学生粉一个香单链数表,粱链表统结点里数据埋有:衬课程棵名,猜成绩级,单轻链表用指针纱。功能见P2席06图6-溜31定义推每个痛模块夏中函爪数(寇函数隔功能鼻,函膛数名缴,参陶数,维返回包值)址。例:酸有序列数组临插入和元素/*在第i个元就素之男前插昆入元罚素x。a为整累型数熊组首咳地址腿,le做ng输th为当以前数纠组元蓄素个压数,x为元维素值伐。*/in切tin少se忘rt水Sq复(i择nt*攀a,in东t&l另en摆gt讽h,in谨ti,in潜tx){in凭tq;if阔(挣(i资<1罗)|殊|剧(i行>l拥en凉gt堵h+种1)库)re言tu锋rn网-啊1;梅/迷/i值合科理范额围:1~孙le尸ng购th饺+1fo白r(材q瓶=l恭en宅gt虏h;迷q识>=隆i;航q老--币)*(a+巾q)朴=掩*(汤a+稻q-岭1)范;*(a+忙q)照=括x;le抓ng相th椅++避;re罢tu割rn渔0旋;}例:国有序界数组映删除慰元素/*删除启第i个元坏素,厘指放偿入参锯数x。a为整适型数孔组首驶地址涉,le赤ng悟th为当蚀前数内组元兰素个累数。庄*/in画tde底lS费q(洋in俱t*粗a,in瓣t&l妈en腰gt杜h,in览ti,in车t&x行){in每tq;if见(以(i却<1仙)|蕉|泰(i相>l绢en吉gt萝h)提)re嗽tu唉rn节-略1;穴/散/i值合摊理范供围:1~银le的ng漠thx女=屠*(遗a+咽i-所1)戚;fo吧r(适q证=i拉;视q<外le卫ng杀th吨;须q+闲+藏)*(墨a+塔q-余1)胆=传*稼(a+旅q);le请ng尺th员--比;re护tu清rn妹0敌;}数组与例单链纽奉表的逢优缺焰点总台结数组预知祸数据峡多少必须血用连剧续存剩储空扫间支持为随机好存取插入趴删除位操作近需要搁移动伏大量植元素单链蚁表不需月预知缎数据甘量不需毙连续府存储磁空间不支禾持随午机存煤取插入伸删除释操作淹不需王移动举大量椒元素不用报指针挽实现尚单链金表有些议语言拌没有旺提供却指针杠类型七、备文件持久下化存荒储数导据外存猪数据萍以文之件形寒式组亩织依组兰织形叶式不辟同,销分为传两类爆:文本衫文件二进义制文凡件文本递文件以字鹅符为盗单位谣,每古个字甜符一阵个字竞节,鞭存放AS断CI饮I码例如驾:00座11纷10却00冶00稀11古01研11派00质11甲01秘10哈00启11协01改01存放87筑65有若抖干文厅本行满,每穴行以秋换行锣符’\n垂’结束文本石文件避结束坝标志撇是EO乡丰F,它脉的值禽为-1二进洁制文煤件以二本进制乡丰形式锄存储蓝数据例如魂:数柔值87细65存放宵:00汇10剥00别10贡00杏11康11怀01需要矛两个瓣字节慨存储挨这个覆数值所以传,二劈燕进制许文件相也可止以看弓成字穗节序芦列,慨称为徐字节流,有治了这戴一特腊征,织也将籍文件断称为流式焰文件文件肥指针FI抓LE结构葡:一趋个内野存中杯的FI向LE结构蓬对应御一个捡磁盘汉文件里,FI料LE结构虑声明喇在st羡di谨o.考h中。财见P2堵11页定报义。使用勿想文铲件,册先定胡义文件旗指针FI宗LE罗*衡<指针帜变量义名>;FI埋LE箭*fp;打开走文件打开隔文件念,系系统自司动创浙建一宅个FI屠LE结构旁,并末将提峰供指找向此羊结构厦的指满针。完成鲁库函填数:FI桐LE忧*fo籍pe碍n(赖ch渔ar*fn剥am看e,旨ch团ar妻*壳mo恰de示)FI约LE漫*fp;if画(fp=fo裤pe掩n(荷“c象:\\fi建le延.d间at",驼“斧r")=我=N新UL却L)pr旨in秒tf甩(“通\n不能春打开监文件"童);文件挺操作娘模式mo龄de参数盾的值唉,见P2垫12表关闭刊文件打开尿文件洽后必盯须关耻闭文汇件,畅否则尼可能齐造成棒文件图指针磨泄漏贝或文径件数胜据丢绑失。完成师库函文数:迫成功肥返回0,否篇则为扒非0值in闸tfc绞lo多se是(F仙IL抄E*fp)if柏(fc纪lo师se件(f腔p)岛)pr尿in陈tf利(“艘\n文件饼关闭墙有错猛误"突);文件汽读写打开折文件毕后可融对文驻件进改行读钱写操唇作。库函般数中就有若软干文较件读鸽写函被数:字符唇读写蜜操作字符斩串读啊写操橡作数据售块读素写操霸作格式艰化读仗写操凤作字符靠读写巷操作in龙tfg似et智c(东FI主LF*fp)在st茶di丧o.忧h中从fp所指娃文件林的当近前位禁置读妹取一求个字率符,舞并将异文件姐位置童指示抱器增喘大;返回搭值为妻字符融转换困的整捎数。到达湿文件寇尾时互返回沟值为EO箩Fin金tfp锻ut康c(孔in日tc,乳F屑IL络F浸*fp)在st岁di碌o.妨h中将字妙符c写到fp所指冬的文迹件的真当前档位置痕,并泳将文炼件位则置指窝示器毕增大追;返回晴值为奋所写忌的字榨符的励值;字符观读写仆操作例题撇:读凉取一晚个文抬本文奋件,坝并将跪内容旋显示砌。#i粱nc湿lu令de炒<st赞di篇o.旋h>in谜tma饺in蓝(){FI惧LE坑*fp;in余tch;if葛(贼(fp=fo以pe钞n(显"e袍:\非\a埋.t拥xt眯",般"r")枪)姜==诉NU撕LL校)臣{pr张in失tf羊("瘦打不因开文谎件")菊;re乓tu日rn灿-币1;}ch=fg娃et刘c(fp);wh劳il越e(ch!=的EO脏F爽){pu拢tc拦ha封r(扣ch);ch=fg熔et狮c(fp);}fc洲lo伤se紫(f碎p);re过tu辫rn倾0谢;}字符盈读写瞒操作例题剃:文搁本文夫件拷扮贝#i散nc和lu铁de举<st区di诊o.娱h>in驰tma涌in锡(){FI晴LE闸*月fp代1,阵*搏fp士2;in献tch;if脑(系(原fp兄1=fo证pe将n("e:劫\\村a.管tx箭t"龄,"昨r")水)保==铜NU征LL迁)裤{pr坝in猾tf皮("打不湿开旧文戴件")终;re妇tu荐rn战-暮1;}if迅(摩(压fp委2=fo盲pe面n(秀"e鼓:\遣\b墙.t至xt承",禾"w")趁)=两=N寇UL咳L句){pr径in唤tf绳("昼打不絮开新消文件")摆;re豆tu狗rn侦-蜂1;}wh阳il呜e(诵(ch=f静ge努tc鲁(f爹p1过))刃!=

温馨提示

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

评论

0/150

提交评论