




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法与数据结构实验指导书拖钸呗帅懦传莘蛔泣缚秸算法与数据结构实验指导书拴城荞哚嬴缍掸每挟讶酝蜩使华莪痰怀胬唛侗瘃废第1章 概述揭砺舟茅硪晷槟荣议缶汉31.1课程简介饵裟蜴薷瞬孝登稍啮媸沮31.2实验类型游晤潢疱酶蟋晚辱枇膂癜31.3实验环境诊泰拊轸奁噶毁拚端鲅谁4第2章 实验要求嗡苛羚锤哭暌男杉湎怯擐52.1实验过程要求垢鹳俐呓锼琪獭樾帱滩窟52.2考核及评分标准钜丁访嵫媚晰砀笙秃侠赏5第3章 实验内容樱盐环猩膏揭鼬恿吻虏轫63.1实验1 线性表的顺序存储晌玎癯颡俞霹咀胆湛肄蛉63.1.1 实验类型移莸袭形隧敫潘莓条亳鄢63.1.2 实验目的叫鸫搐謦宀萆任雍搋及衬63.1.3 背景知识景笕矢屹
2、毛崦楦魁骚损砦63.1.4 实验内容卵隈琼揽凄邱斥蠼讯品荼63.1.5 实验分析与思考羡镓权衮忻嗉直瓞始储灞73.2实验2 线性表的链式存储阆荭碡钷进馁媚始髓季掣83.2.1 实验类型骅珐固碌离炔辽鸹斡瞢觑83.2.2 实验目的镨篆啪统囵销濂琴眺雇灼83.2.3 背景知识鲍催婀说因迦寿婉晔曛拓83.2.4 实验内容睨畏呤骓绂肫旅姆贝笏弓83.2.5 实验分析与思考懦果废龌缵逼氽伟蒲一餮103.3实验3 堆栈的顺序、链式存储峒檩肢钸尝氮量辰烀戬涧113.3.1 实验类型啸氇冒存窿府超趣嗽跌蜚113.3.2 实验目的哽搭寞瞍事绗衷签涝趺瘗113.3.3 背景知识喈淹庭埙叫轧郐说壮卜糖113.3.4
3、 实验内容禄龅极杪娩蒈揽菊咕控建113.3.5 实验分析与思考疴豚筷炕踹埃蝰套卷傥史123.4实验4 队列的顺序、链式存储锶囡徇边眦松腐巫萄努渠133.4.1 实验类型跗桨腮檬遑塔晏迨壤跪兵133.4.2 实验目的箩拐箜她榉饩事陡宕沦温133.4.3 背景知识扛犟菝蜊泰评激玎败马芹133.4.4 实验内容暨窘跑戒废皖莒沧但翅泸133.4.5 实验分析与思考剡荸错氰夯缱殒唯镳俐撸143.5实验5 二叉树的建立与遍历饴橐睬愚赞姚征娄艚匆渌153.5.1 实验类型由赖彀琅酸沃祸导燕酒摭153.5.2 实验目的堕缪踞祭钾荑僮愠仍镀芘153.5.3 背景知识蜡事首蒉怎兔阙搁嚯美赕153.5.4 实验内容
4、歧该柴直霰憔芄咳榕斯跗153.5.5 实验分析与思考泞厶榧祺疡窆洚库氏诤侧173.6实验6 哈夫曼树和哈夫曼算法笱啥髓咸抽啤沱帘揍竦蕞183.6.1 实验类型饯仙矜嗨亘独菊虹庶苜朵183.6.2 实验目的芦递娑奋凭速奘蒯赛匚啁183.6.3 背景知识窀焕汾胺崴兔麝憨楦嗖蜢183.6.4 实验内容潸诃虏硖窬膨部境礤粢否183.6.5 实验分析与思考竿矬茈笄殊地窬倪淡箪觌183.7实验7 图的建立与遍历私台厶抢绀淳瘦蒋疑酆宣203.7.1 实验类型柝滥航仇掂瞟宫炙翅户寥203.7.2 实验目的蔬难桀衾忡殷属斯硬可屠203.7.3 背景知识俑噬灸茵楱磨拜歹倘癃镏203.7.4 实验内容淦簿痨蔽乖酋褪
5、朔痘嗌啡203.7.5 实验分析与思考夹躲符壁矜侈邋纂沓坚客223.8实验8 排序的运用仑夸袭复渐隶床晖举鸹玢233.8.1 实验类型薛髑柑猎瓮襦繁煺雏酤呛233.8.2 实验目的拘五胬让锓悒呙通椐钾伥233.8.3 背景知识拭寻拍抖葡韭骄嗷芜杯缘233.8.4 实验内容土塥濯栋益亦沾舻榧葫蚀243.8.5 实验分析与思考兜粟侬赏糁表再第硷莲躺243.9实验9 查找的运用与哈希表卅谫僻泞赢犬黯西妤漳谓253.9.1 实验类型垠热鸾鲔昱劭蒙疚腐虞窆253.9.2 实验目的隳豳弛氙凯淄漠燕壹鞫睡253.9.3 背景知识崽蚱唠囔匠羁榛搦鲩伫骠253.9.4 实验内容琅脐戢嗪岽缍赐律熠檗舫253.9.
6、5 实验分析与思考孤鞣貘抓戚麝辅僳呓详觳25附录樘汽钪辄棉馗飑卩菝杼沓27附录a 实验报告格式钭宝兼淘嚣嚎嗄叔拮枉棱27附录b 实验工具使用缏龌粲赈讹劾凋酯厥韶井29参考文献醣筻庳钯邦鲎柜佞乔琳桔31域酋咂众窟逵衩冈桃父吡第1章 概述揭砺舟茅硪晷槟荣议缶汉1.1课程简介饵裟蜴薷瞬孝登稍啮媸沮“数据结构”是计算机程序设计的重要理论基础,它主要研究数据的逻辑结构、在计算机中的存储结构以及对数据结构进行各种非数值运算的方法和算法。数据的逻辑结构主要分为集合、线形、树(层次)、图(网状)等四种基本结构。通过实验,加深学生对数据结构及应用算法教程理论课程中基本数据结构的理解,掌握基本数据结构的实现方法,
7、培养学生运用所学理论知识,选择恰当的数据结构独立解决较复杂的实际问题的能力。芰裒答括耐酮僳觚鲺斧贲囿奘赃坪岢潜缣纶旆阿鲈算法与数据结构实验体系见表1.1。瞿佰暑塑很脐蛋昴怜痰鲇算法与数据结构实验体系雪士于罅桥翰蚱黛脏车蠲实验类型夂友椟办癖砷悔赋岈缆萎序号斜捷冶腻饺嗥冖癣促乓僻学时矫刻遄敕柒隶椭瑟渡愦鹚实验项目嵬醴褶沙赛决营第篷安粹选题要求潮俺启甩维逯耷钞蚱底鳜代码提示基苋柢凝茧垃服郴鸥浮巩验证型蝗辜睑蟹忻圜恩伎衄艴悬1竣首疸匈布源剡捶榔么蚊2琛露宫焦窆忧镣嬗蕞挖窝实验一 线性表的顺序存储结构娠跨墅豌罢孥舡懒桷噜璇必做脯矫汁沓窭筵床蚺阖镒蓄完整程序鼯憧芦逊垩衣庳枚淦箩艹2鸾驮丕鼯蟠湔朊怎哗謇旨2
8、枯阒鑫腌吣钏蛸日葵沓朔实验二 线性表的链式存储结构骘跃弥镩缈呋泄驶工卑缺必做港秒板冬侄崮窘镜硐建芾完整程序咩敫取郓失絮难瑜财柙文设计研究型盖必鲋崃吗琅珍剀痨圈播1骨竣体蛊证址急袂蚍旯蜕2叽伧蘅阆八柄峒碛成襦廨实验一 堆栈的顺序存储结构兴苘兽府锾抠仔涵拍砚酴必做媚嬖蚣髦淫颥至牵疵碹沣框架藜谁哎欢醋樗值庸梳舣峪2菊帑汛狐荐睢捕剩鸠钫丫2堪铨堑珏躬稼校纸警倒簟实验二 堆栈的链式存储结构力呀疚蹋您呛痫濑髡撤吠必做颉岸郊楼也铼狠往猊龊刎框架锈窍吭舾井揽缢苜清趔鸱3官飒曜绠缮初确鹞幽历膨2笆琰颞倨秧塍铹伊莺箍薛实验三 队列的顺序存储结构婴滔袅沾幞每璋叨裕庆淫必做澳胭伲礤挣洛礤导鼓礓尖框架歹阱纬蕲亨髦架毽盗
9、衡序4穹淼财留跟官款蕖惯驰瞧2缏邪持勒搞蕈坷磊坛裳矫实验四 队列的链式存储结构爸保腐坐渴洲汾酏退呛灬必做缏佾沁娥胄询鹊跬勃鼙贺框架烂苯胬刺讵铫儿什瀛桀踣5嘣谖肚曩痉殛舯滏思隧鸣2删汗毡门怀锇税霏罘肚亨实验五 二叉树的建立与遍历儋档虽髁咏茏谘梯慰暹蜕必做蠛凤仔戳萄虮交脸巍懈瞬简单框架蟥痪缦艘节喧真摹脓枞泓6史芒翅莶轧芥线珲烊瞌惫2纰卅踢谣傈难浩糨讣酌笫实验六 哈夫曼树和哈夫曼算法但批鲲桐碣综耨羲轳嚷肘必做嗥汤督坤郎陈梏榀媚葩泰简单框架五谪菔柢官谎攘葸鹁持搐7甫癸美笾黼诞螽谔祟莠寤2返询塑汹院錾肇踉侩朽淇实验七 图的建立与遍历凝辩懂醵祓醭止豪梳醇哮必做蝴榆恻已萏魑颁试裎渴徇简单框架浜斩轼仑锎态劈泽
10、凋膜及8列苦怡绌钧毙血缌繁勤刊2喽畿剌冁尥翔皲颠壁孛拨实验八 排序的运用挚摘偿瑭特叁力醢柳倏巴必做被鸠徕锪鼷氏跫眦讠扒胳文字提示颢搅赌钷竺晗蜕韫镇溧苘9颜卢庥身彭赖刮槔咱翘读2篁亮瑟穗声爵蛋谇编躯胳实验九 查找的运用与哈希表突犬圪闶忮蓟刀扁啉驺蜊必做非禄黜眼躇嗒仓胄坤割摇文字提示岳嘬鹇檫瘳侃第熟阚柒兽表1.1 算法与数据结构实验体系玮狄瞧腱绨榱宰蘧鹎仇鸷1.2实验类型游晤潢疱酶蟋晚辱枇膂癜实验的分类方法很多,按性质分,实验的不同类型包括:验证型实验、设计型实验、综合型实验。本课程涉及到的实验类型主要有:验证型实验和设计型实验。笄嘭飙馋乔锅溆娟疾九裘验证型实验沉磺鲁钦阋脞掺卦埯临不验证型实验作为
11、一种重要的实验形式,无论在科学研究中还是科学教育中都是不可或缺的,其作用也是任何其它类型的实验所无法替代的,主要培养学生对设备、开发工具的操作能力,加深对理论的理解。实际上,与课程相关的大部分实验都是验证型实验。实验设计者给出较为详细的实验步骤,旨在减少实验者摸索的过程,争取在较短的时间内掌握基本的操作技术。愕撄谚脯艏苁魄鞴缙磔伐验证型实验的方法:霸腥戚庾侏蒉酾嫱沏钟腿1. 明确实验题目、实验目的和实验要求;铥屣吱彝巨缜鬯嵇堍坠檬2. 熟悉实验背景知识;是休鸡掮注屉郡搜蜕偾犊3. 按照实验内容进行实验;俨曷栀渴戡詈颍括梯毅馥4. 分析实验结果书写实验报告。蚣杵枪殇拂痄懒胫论姚苑设计型实验抬眠履
12、踩树霉骨丝庙用笺设计型实验:培养学生的设计能力和独立工作的能力。这类实验是课程中较大的实验。也就是在基本训练的基础上,提出一些有利于启发思维,有应用价值的实验课题,让学生进行设计型实验。题目描述,以提出任务、要求和阐述应用背景为宜,而如何解决问题,解决问题的原理、方法和所用仪器等由同学们自行提出并实践。目的是使学生运用所学的理论知识和实验技能,在实验方法的考虑、使用工具的选择、测试方法的确定等方面受到比较系统的训练。讠浅斡遐椭恧湖滦症千搠设计型实验的方法:篼曙瞧杌询己崎铝堞社榀1. 了解题目要求,明确任务;恽茗睬轮酬蚍跽旧胎媚抗2. 查阅有关资料,画出必要的原理图,寻求各种解决问题的方法。从原
13、理、方法和使用工具等多方面提出完成课题任务的依据及实验步骤;桓粑辆魈嚆太哇赣溅达咐3. 做实验;柞帐述蚧逡鄢懂反儋柳蛋4. 测试结果评价,总结分析并书写设计报告。泶恢垲唯暂鞭礻搐袍靥揩1.3实验环境诊泰拊轸奁噶毁拚端鲅谁数据结构的抽象数据类型(adt)特点决定了可以采用多种工具来描述,每种描述工具都有不同的实验环境。主要有以下几种:返汝娄募可栽捣铗襁哓颁l 类pascal语言 潆诶刂懋扳胎毂鹉纠淠铹实验环境:turbo pacal等炉笈芎嗒匙裳半凑皮筚嬷l 类c语言 渣编眷溃被薏晟父魇鹉痱实验环境:turbo c 2.0等樗桌骼撅噜缜匾蛞砑恍丽l java语言 阁痹幅止庀帑铰圳饶先茹实验环境:
14、the java development kit笳揖贾气炒彬航府访鬣逞l c+语言靴氐筏榛锰渤览在鸸驸蠡实验环境:visual c+ 6.0等酎康施嗔罟蚴律绋诏肫鹬本课程主要采用c语言作为描述语言,同时又采用了c+对c的非面向对象的增强功能。例如,动态分配和释放顺序存储结构的空间;利用引用参数传递函数运算的结果等。因此,本课程实验采用visual c+6.0作为实验环境。有关visual c+6.0的使用,附录b简要地给出在visual c+6.0环境下编写c程序所需要的基本知识。爱宿樊谳打洎弧闩妾元溧第2章 实验要求嗡苛羚锤哭暌男杉湎怯擐2.1实验过程要求垢鹳俐呓锼琪獭樾帱滩窟本课程中,实验
15、者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。在指定的实验时间内,必须到机房内实验,其余时间可自行设计和分析。本课程所涉及的程序代码,都要求有较高的可读性和效率,用面向过程的c语言实现。栀邦疥迟嗖熨唠缚区诳鐾1 验证型实验:郸畋暹棰批姬芯盟吼髅啐实验前,预习实验,了解实验背景。按照实验指导书内容进行实验,实验时注意每种数据结构的实现方法以及复杂程序的调试技巧等,最后分析实验结果,得出结论,按格式写出实验报告(详细格式参照附录a)。句乍糯纱第胸叨斟普嫠谬2 设计型实验:掖廑剂逑嵘刍鸵孥麻肓楗 实验指导书中规定的设计型实验完全取自教材。完成该类实验可以借鉴教材中的设
16、计思想,但不得完全雷同。洱膂炱处僚糖醭嗄步剿鼓 根据实验指导书中规定的题目,明确设计的目的和重要性,认真领会设计的问题,读懂设计指导书的要求;骏麸屹厢攫鞠平嚼朊洧虮 设计过程中要严格要求自己,独立完成设计任务,要勇于创新,设计代码规范、效率高的程序。同时要善于接受指导教师的指导和听取同学的意见,并按时完设计任务;菌闪恣畈协抹募绕怿佟殉 认真分析实验结果,得出结论,按要求书写设计型实验报告(采用验证型实验报告的格式书写)。婧董摄鄣偏崔培妻皓砜嫡2.2考核及评分标准钜丁访嵫媚晰砀笙秃侠赏若实验者在指定上机时间三次不到课,取消考核资格。请假,必须提前出具正式假条,不接受事后假条。如果发现抄袭、篡改、
17、伪造实验数据,或实验报告和设计报告雷同,涉及的所有学生的该课程成绩计为0分。髌耱梢伍俟癯堰扬潮跛痪实验报告:实验报告必须符合各个实验的要求,按照实验目的、实验内容、实验要求、实验设备、实验结果、测试等部分进行组织。称捶闪钷蓐思襁守毋胁耸学期实验成绩包含平时实验报告成绩(45%)、实验过程成绩(45%)和其它(10%)三个方面,其中实验过程评分主要体现在对基础知识的掌握和应用上,具体的方式和比重由指导教师根据实际情况灵活把握,其他部分,主要由指导教师灵活处理,可以是考勤等。哐锯乱螭嘲铑氏葵捍蹿蕙第3章 实验内容樱盐环猩膏揭鼬恿吻虏轫3.1实验1 线性表的顺序存储晌玎癯颡俞霹咀胆湛肄蛉3.1.1
18、实验类型移莸袭形隧敫潘莓条亳鄢验证型实验瘀池翡低轱口苡鸪灯呸姚3.1.2 实验目的叫鸫搐謦宀萆任雍搋及衬 理解线性表的逻辑结构;对房鸯螽猜寤汽痴编哭怆 掌握线性表的顺序存储结构;瑗轱蜀绩戎奠贸鳌树跤秸 熟练掌握线性表的顺序存储结构的基本算法。俩释珞琪尧锷染蒌潲普颗3.1.3 背景知识景笕矢屹毛崦楦魁骚损砦在计算机中表示线性表的最简单的方法是用一组地址连续的存储单元依次存储线性表中的数据元素。线性表的这种存储方式称为线性表的顺序存储表示。在程序设计语言中可以用一维数组来申请一个地址连续的存储区域来存储数据元素(如图3.1.1)。翎屯冠靳洼中吗亡劫聋箢翰弑婿野烤鞴谄蝮岸磨鞭图3.1.1娉龄邴虱诹飓
19、尚绿畹碚抻在线性表中我们可以对表中的元素进行插入或删除等基本操作。插入一个元素时,其插入位置之后的元素要依次向后移动一个位置;删除一个元素时,其删除元素之后的元素要依次向前移动一个位置。史钤馆椿六饨拭肟岖喾贪3.1.4 实验内容卵隈琼揽凄邱斥蠼讯品荼基本要求:邯凹表瞪銎儡襞拈售缩迄1) 用c语言编写程序seqlist.cpp实现顺序表的各种基本运算。梗窝森猱趔堑直莼窒舍底2) 初始化顺序表l,依次从表尾插入100个整数,并按插入顺序输出这100个整数;昌权值怯眩铬篆绛屁伲写3) 删除顺序表l中能被3整除的元素,并把剩余元素依次输出;懋抢椭取沙崾币遄枢谖铼实验提示:阡镤垒熔跤犁穴俚澶秆桢1) 在
20、vc环境下建立工程,添加空文件,初步建立程序框架,参考附录b;杠役倦辆郢楞生宕鹈睫休2) 编写程序实现顺序表基本操作函数,在此过程中即可编译程序,检查语法上的错误;隍坻踟滨芒垂顺倥劓陆嘧3) 建立主程序;逭舛錾咒暹岑椿蛮颓毫缓4) 编译、连接、运行。辰毽皴蹇砻跟哇爽烫意囵程序框架:谁谓矽鳊乜插枢氕饽陵蚀/*seqlist.cpp*/蠕哒螅巍龅皴帆北丢唳锋/*文件名:seqlist.cpp */喳咿千卉钱鬟铧噩囹螓座#include瓢穆鲨丐烊筻婉文蘅峒术#include惹啃板卢唪探岚弊簸零扦#include芭绠榀忭瑗嘤吐痈葬冒吸typedef int elemtype;绱槟澉苁戴外泐署字许兽co
21、nst list_init_size=100; /线性表(默认的)初始分配最大空间量哲跚稃时帅恚诠叩珠通奠const listincrement=10; /(默认的)增补空间量羧炉旧峨鲋悒咄腾乐炽泉/-线性表的顺序存储表示-宅鱿迹杰皱臣弑阑茑蚬姜typedef struct跺费沥耩佐躇见仿莘淅叻elemtype *elem; /存储数据元素的一维数组羚埴铗乾避佣错高揭东拖int length; /线性表的当前长度兜醍邝苫翎卢七氩畏跽个int listsize; /当前分配的数组容量(以elemtype为单位)氆诲饕截涩密言吞掾剿杌int incrementsize; /约定的增补空间量(以el
22、emtype为单位)董酡锱述站厦呋募搐幢檫sqlist;接丸馏鄞砣纛矸冤嘌揣铁/顺序表中基本操作实现蚀农季攮搜乾庑贤洛稂瘿void initlist_sq(sqlist &l, int maxsize=list_init_size, int incresize=listincrement ) 豫索逄榕拷汗樾宰敫铼昂 / 构造一个最大容量为 maxsize 的顺序表 l匮稀芯由幻旃瓢孜姨嬲磕 l.elem=new elemtype maxsize; / 为顺序表分配一个最大容量为 maxsize 的数组空间卯款烁亩豪罅刳岛壮考绱 l.length=0; / 顺序表中当前所含元素个数为 0郄荨鹗冲
23、笺罪歉竟量髡哀 l.listsize=maxsize; / 该顺序表可以容纳 maxsize 个数据元素沧耷牯茵夸胖嚷涤铢冉奸 l.incrementsize=incresize; / 需要时可扩容 incresize 个元素空间拆嚓螂牌丈鞭铰逻架鹪逸 / initlist_sq赋艮虼麓佘烧菟鼗嗡澈攵int listempty_sq(sqlist &l)担彻肪唐汔这限氟事饿湎 / 判断线性表是否为空,若为空则返回1,否则返回0铴金改傩析署噻礅蛋嗍辄if(l.length=0)屏惊吞骧蹿眍的编滑鹛嘀return 1;蓉室扳色道慝处幂羟短镇else房卵老褚蕴撤欷巢押放铭return 0;麟鹭绔廿鹞
24、晚噤忌岵沱跋/listempty_sq并若良蜥纫余泞忌码素幌int locateelem_sq(sqlist l, elemtype e) 价刃诂压嗣啮起崩凉烷善 / 在顺序线性表 l 中查找第 1 个值与 e 相等的数据元素,且肽宙覆闸倭焙嘞赀砭景 / 若找到,则返回其在 l 中的位序,否则返回 0镨熨抱系杆每哜特疆烂锻 int i=1; / i 的初值为第 1 个元素的位序断倒殪忸袅甄蓝症棼薨哆 elemtype *p=l.elem; / p 的初值为第 1 个元素的存储位置辑濉泥必浓巨酲铉垆宙现 while (i=l.length & *p+ !=e ) +i; / 依次进行判定鲟诖子蹁
25、浸痰哽秫驺吮捃 if (i=l.length) return i; / 找到满足判定的数据元素为第 i 个元素藜警烩粕杳兽链姨怛覆孙 else return 0; / 该线性表中不存在满足判定的数据元素棂仿夕沙摊恪痞胝征碜嘁 / locateelem_sq僚隗纹罂羟颟谟嗡聘托伶罘悖嗽混逝钵刭蔚彬撑炭犍巯镞毖愆侪眦漳悸黑朝吒圪鹫挛浃疾坛氖壁圭毵/为顺序表追加空间的函数为:赘畅蠊瘾碘遭豹绾扎眢畅void increment (sqlist &l, int k )择愧冉婴啖欣饺魑溅槔烟 / 为顺序表扩大 k 个元素空间愤谪羌骺绘予沲环卿背肀 elemtype *a;雠翰掌猫褐挫赚胃虍栽獾 a=new
26、 elemtypel.listsize+k; / a 为临时过渡的辅助数组盼机唆屋算榉喟氮礻搜模 for(int i=0; il.length; i+ ) ai=l.elemi; / 腾挪原空间数据愎螵屎钛尥蘼窒庸扪稻林 delete l.elem; / 释放数据元素所占原空间 l.elem护糇哎锄莅瓒谋垣阏鳊膘 l.elem=a; / 移交空间首地址今锰膀用惕佚远俐褚吹马 l.listsize += k; / 扩容后的顺序表最大空间 骼侯础柽後均肓花掣仁姑 delete a; / 释放辅助数组空间踌滏砀庀啶坏际铀徙民喵/increment荪正芰峄古枞倥诡愕跬六挟稍庋氖披桑右闲漆甜呕void
27、listinsert_sq(sqlist &l, int i, elemtype e) 榨鞫戚查呤宦飒珊隶挢诉 / 在顺序线性表 l 的第 i 个元素之前插入新的元素 e,i 的合法值为磲柴铱蓁庇粗仍镎佧颂虞 / 1il.length+1, 若表中容量不足,则按该顺序表的预定义增量扩容 舂漓靶润扶镨造占蝎婢绗 if (il.length+1) 镑诟四薤憷匙泛诲糕帚琅 printf( i 值不合法); 图铑噍珙痉援檩鹘捎瑗筒 if (l.length=l.listsize) 勿铮墩粱译孑爿谡亍问郾 increment(l, l.incrementsize);珥圾紫雁瘸嫖胍畦召滩上 / 当前存储空
28、间已满,为 l 增加分配 l.incrementsize 个元素空间碌夼喜簇牵牖容彀虎董晾 elemtype *q=&(l.elemi-1); / q为插入位置琵直涪睾揿樾啮茧瘸终崴 for (elemtype *p=&(l.eleml.length); p q; -p) *(p+1)=*p;铑璀笥眸雀悻本娠刻号荜 / 插入位置及之后的元素右移仟揶疖脬刿沿馔都捞瓿蕾 *q=e; / 插入e畏弯皮饶大变鹜猁饩摞戋 +l.length; / 表长增1沤埴氏觇卺糙翻歆郧绒拱 / listinsert_sq褂蜡芥沿姚娩逼箔思忧殪势后跑蓑歌啊答盛裼悸醣void listtraverse_sq(sqlis
29、t &l)赶浴烩雾蕃许牟宽佩北酯/ 依次输出l中的每个元素今巍钦伊隔荡羁购穿舐洫int j;嗨笨抑庀禾为遮黔累雇胞for(j=0;j=l.length-1;j+)段青嗜牡盅喀仵侔爪罟苍鸶桎俣课唳喊钪短磷棘埏printf(“%d ”, l.elemj);鹊姣囗憾斤光探打殡昊芊if(j+1)%10=0)媪笫慌扬竭遒裱桎肛笑涯printf(“n”);褊禺欷崤笥摹璃歙鲑虫樊莩诞窒喇抄铁锍嚷劢荜模/listtraverse_sq谢既媚榜奠趺莽磐蹬怪毙炬蝌蹇魇徇煲请啼峥米粹渡疾裥巡怕肪憾海迪锅亡拒巩恼尸葆迹沙揉刿娱凸赙缓邑蒎犭恹蛎岱涡榇漳void listdelete_sq(sqlist &l, int
30、i, elemtype &e)岱淼妫藿橡钲渍悖侮损置 / 在顺序线性表 l 中删除第 i 个元素,并用 e 返回其值。阋彤粼讨屙颧贷龆瘿姜估 / i 的合法值为 1il.length。脲眵掮头玮愿哼九亩羲暖 if (il.length) printf(i值不合法n); 嫒恕镫秤境台歉璨盈靠醢 elemtype *p=&(l.elemi-1); / p为被删除元素的位置密华菘钢敉返黾径襞密俦 e=*p; / 被删除元素的值赋给e稷臣谦陕蒂罅絮蹯熵诅荭 int *q=&l.eleml.length-1; / 表尾元素的位置慊填仄罐宋蹰姻苓妥锡瞟 for (+p;p=q;+p) *(p-1)=*p;
31、 / 被删除元素之后的元素左移涂市匹鲚唆宛舁窗服呸带 -l.length; / 表长减1砰麒阖溲香爿屉禀轹炼兼 / listdelete_sq婶漏弧惨胩头荜债医飧井首帅牵禁牝娴狐片外径蠡void getelem_sq(sqlist &l,int i, elemtype &e)什寐菹婆崂染颅懑输哩佼 /用e返回l中第i个元素的值, i的合法值为1il.length餮淑燠喇揪瓜秸绕涕旎抠if (il.length) printf(i值不合法n);舰零帆鹿拴朔鞍勃捱猓牡e=l.elemi-1;杲娠受火萄况贿蒽汕胼褡/getelem_sq脒庄榇粟虑皿撙砀瀑绡庋懒每系匙梯基佟盎姨迕亮void destr
32、oylist_sq( sqlist &l )柔腭扁轳庆羿吃惟铩埘吕盟筮净鹾癌湃歼磔柒剂砚 / 释放顺序表 l 所占存储空间愈筠泡湍链傲羡非卫撼例 delete l.elem;嶂唬屎彼孚珩睦廴遮渠奖 l.listsize=0;楷礼杯理侧奋亲苕棺馑都 l.length=0;确胲漕茎校浅愉沱贾色涵/ destroylist_sq臆瓢耆眉弦际吝慌韧屠拜/主函数腽戕撕垂刮涫槽餐哥纺飚void main()锷燕哂跹柰嫁剩突羰控钒int i;贴苘檗鸨拥剑摇镯岍梅吻elemtype e;悴奕锁鼽嗥宽塌逞辅转绪sqlist l;茫男道亩需滇莼咽恤闰纹initlist_sq(l);遭蒲痘朴墙孽鼍危禧萎黄for(i
33、=1;i=l.listsize;i+)亲讼枧堪汕该瘳菌擀悬茌listinsert_sq(l,i,i);病狈幻晌屏僬蔸管庞犹馈listtraverse_sq(l);嵛秘混踅丕灰啤惚嘞魏章for(i=1;i=l.length;)谫赔拂旎锲霏隐圮墚秽模账兰扭惶丑漤鸫膣颦霓翠getelem_sq(l,i, e);洎具跄龃铆坎咳艏罟油觚if(e%3=0) listdelete_sq(l, i, e);叻戌桔耄哗空睹铝枷动纷else i+;齄悴奏怏卷式醒堪畴蹩桠圬娄伐仑憝调螭遴姘灼濒listtraverse_sq(l);锃嘟钦盂孔郄孑觊摄纤闩 printf(“n”);杜诠掭挞枉郡栌矬怨摺为虼敝博轮诡忒碟岐
34、嚷矮溅塘爷擦斯聊雁莞展妇玺眉3.1.5 实验分析与思考羡镓权衮忻嗉直瓞始储灞1)实验过程中,所设计的程序遇到哪些语法错误,特点是什么?遇到哪些逻辑错误,采用什么调试技巧解决的?惨坷识髫葑慑趄秦腑骇苴2)分析顺序表的插入和删除操作一个数据元素的时间复杂度分别是多少?鄞讵勐凋怀镔刷蹙蚊醮针3)通过实验,分析顺序存储结构的优缺点。肘渭定铄琮往摺饷犸姒篡3.2实验2 线性表的链式存储阆荭碡钷进馁媚始髓季掣3.2.1 实验类型骅珐固碌离炔辽鸹斡瞢觑验证型实验镤礤罘杯呀七埤聊娄掴啧3.2.2 实验目的镨篆啪统囵销濂琴眺雇灼 掌握顺序表的链式存储结构;砗隈咖畹捷秤扩叭捱擀煤 熟练掌握线性表的链式存储结构的基
35、本算法。檩理镢茑拥禧焰慢逝恶印3.2.3 背景知识鲍催婀说因迦寿婉晔曛拓线性表的链式存储是用一组任意的存储单元存储线性表中的数据元素(这组存储单元可以是连续的,也可以是不连续的),也就是说任意两个逻辑上相邻的数据元素在物理上不一定相邻。因此,为了表示每个数据元素ai 与其直接后续元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需要存储一个指示其直接后继的信息,即指针。n各结点依次相连构成一个链表,称为线性表的链式存储表示(如图3.2.1)。二走保帛怏悚埽荥饲骨箪滹讫逗鳞黹院笄咒稽阔指图3.2.1点碹淹绔吮巽朕萍掉搀疥在对单链表中的数据元素进行插入或删除时,可以通过改
36、变指针的指示位置来实现。棒弋骺柰驭毡匆瑷邹丕舸3.2.4 实验内容睨畏呤骓绂肫旅姆贝笏弓基本要求:除饔凋蕲嗬冱拥岑最汀城1) 用c语言编写程序linklist.cpp实现单链表的各种基本运算。缔录锣兵恭疝瘐搽耄滓孚2) 初始化单链表l,依次从表尾插入100个整数,并按插入顺序输出这100个整数;恋弘悲敲拈爱圳尺塘谕货3) 删除单链表l中能被3整除的元素,并把剩余元素依次输出;替掊遏烫驻璜舴鼋蝉浒嘁4) 简单修改程序,实现双向循环链表存储结构椰幛钨葳傧扁磁磨雄抽蘅实验提示:苴擞朗华抵辍喈蓐梗凝剖1) 在vc环境下建立工程,添加空文件,初步建立程序框架;缓潼只膛币蜈斐苯闪讼醌2) 编写程序实现单链
37、表各种基本操作函数,在此过程中即可编译程序,检查语法上的错误;蹬凰烩轿赐茈可撕甸隐映3) 建立主程序;元赫怼癍郾眈饥摊滢丹漳4) 编译、连接、运行。侧蹭撞酌碲颢匣廴轿嗵提程序框架:尼醯筇殂伦母胛焖拿阙滕坟痊俱愈嫒肆孟胰弈幼戈/*linklist.cpp*/啻烃老豕朵殛勒迓当事睁/*文件名:linklist.cpp */骗闽立驴常擤狱嫣佻献攥#include试绑戏帻烧骨骢铳喂崽#include鳐恢西楼哀拘霉鞫痨辇辐/-线性表的链式存储表示-茫呵葸禄造艺达闷堀康兼typedef struct lnode炭鹬瘰季疔雇疆涂惹蛏园elemtype data;醚继埂搔淄蟑仃抡锕炼衰struct lnode
38、 *next;窗啡疔舳昊耆嗔祓协赡园lnode,*linklist;秀鸷史淑堆鳞娓赋茅开擐逸防白了智奖寞寄荫滥铣/单链表基本操作黟发鹬孛奏攸海堪设泯杏void initlist_l(linklist &l)便极酉啬疚烛汗谩凉肺卺/初始化链表,创建头结点爸仔赀涠津狸勉琨楷俟陡l=(lnode *)malloc(sizeof(lnode);碥勺擞俭鸸恋缕菖猷燔绑l-next=null;茉糨炯严钥狈灏卜顶琵鬈printf(test success!n);迤爿髹档搪欢央量囤词忉床锷污骆邻点趴铼肆胴静void destroylist_l(linklist &l) /销毁链表l考跋疸卢宵骓臾缏哜俨弦醪砟颉
39、礼妨爽暂规喝账驼int listempty_l(linklist &l) /判断链表l是否为空,空则返回1,否则返回0妹薪嫖拢乎肤泮纡引喘背 return(l-next=null); 摅贤荦赌喹筋疹啥惩等蠃int listlength_l(linklist l) /返回链表l中元素的个数八鉴烛昊烤嵯句臃庹角抻 皋漠揩咧铿逮摭茺谴琦羡getelem_l(linklist l, int i, elemtype &e) /用e返回链表l中第i个元素的值脉袷垂虍哑翊颊卤悼箍汛 彼馆呈冕鳔蠓式算拣唇懊locateelem_l(linklist l, elemtype e) 洵撷笳觅辽瓢勋竖谋桕沦/返回链
40、表中第一个值与e相等的元素的位序,若不存在,则返回值为0葚矛鲇僭篙碾瑾醣眩蓦蕲檠痞诹爝广螫狂贿璨蛐到listinsert_l(linklist &l, int i, elemtype &e) 咔赴伦挡净掴冤钺痉但猕/在链表l的第i个元素之前插入新的元素e,l的长度增加1榈野牙匕坞捭蒜汗招堋嘣 翁湔笼冗躞猊艹床咱徙夫listdelete_l(linklist &l, int i, elemtype &e)崩糇蔡卟骏峁尾相晕狞害/删除链表l的第i个元素,并用e返回其值钒搜鬻嘁螃毗拨虱户挺洞 本谲县妊噻父苘睡密卿赚酩缕演岫魔早瘫鹫绛联张/主函数诳教浠瞍聘博襦嘛抢晤缔void main()咂桐魄斯峙舨
41、迢辅砜纰胛萎桑傻爻鲵霖鞒髑旖奚恧.囚咎蛑钪鼽吱檀坜遣湍慵玑饣鬯丢蓉镟骊窍挚嵴咸雀胂蚴悦缆癍劾串暮筐溪3.2.5 实验分析与思考懦果废龌缵逼氽伟蒲一餮1)实验过程中,所设计的程序遇到哪些语法错误,特点是什么?遇到哪些逻辑错误,采用什么调试技巧解决的?依别内辏汗乩苫槌锴堞月2)分析单链表中,各个操作函数的时间和空间复杂度。谏丐茱庚瀵蹶槁衰狒塬孔3)通过实验,分析链式存储结构的特点,比较链式存储结构和顺序存储结构的特点。谍饽勰韵斫菽凹碰葭莽谆4)链表实现时,为什么一般情况下要带头结点。倔粜恼偶獭痰楫踺掺皋瓿5)比较双向循环链表和单链表的优缺点。尧陉松漯稷铁厥抗藐馆婚3.3实验3 堆栈的顺序、链式存储
42、峒檩肢钸尝氮量辰烀戬涧3.3.1 实验类型啸氇冒存窿府超趣嗽跌蜚设计研究型庵送缅辁豆既刨拉滁晒雠3.3.2 实验目的哽搭寞瞍事绗衷签涝趺瘗 理解栈的逻辑结构及其特点;负才怯夺宴茯韭胨傲芴颈 掌握栈顺序存储结构、链式存储结构的特点;驶蛳撺跷嵛贬伧莩堇岈蛉 熟练掌握入栈和出栈操作。删末必孵享秽请偿坏翩钠3.3.3 背景知识喈淹庭埙叫轧郐说壮卜糖栈是限定只能在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端称做“栈顶”,不允许插入和删除的另一端称做“栈底”,如图3.3.1所示。胭砝伦聊蜇农陉恺集匙聂香掳掰鲂窈茧福降葳唇庄图3.3.1霜蚕冈迭嗌仓庭萏升苎佯3.3.4 实验内容禄龅极杪娩
43、蒈揽菊咕控建基本要求:臁逖双鳎偷掳滴失狈抒锵1) 用c语言编程描述顺序堆栈的存储结构及其基本操作;溃闾鹿徽故崦浃喧瓿昴能2) 编写程序,利用栈实现十进制和八进制之间的转换;(必做)内循缀肘甥高通蠊猕焊鞣3) 编写程序,利用栈实现背包求解问题,即:假设有一个能装入总体积为t的背包和n件体积分别为w1, w2,wn的物品,能否从n件物品中挑选若干件恰好装满背包,要求找出满足上述条件的解(选做)熨孔玖岽慰侃示郢铗纪言实验提示:伲潇蟪帆碡悒篥攸寞翻汀1) 在vc环境下建立工程,添加空文件,初步建立程序框架;蕾佩起罩方板瘃鏖娄淞哔2) 编写程序实现栈的各种基本操作函数,在此过程中即可编译程序,检查语法上
44、的错误;潮銮垢铠徭挨旦俸灿嵊对3) 建立主程序;辈衄泠信蛸哂自枘奥访穰4) 编译、连接、运行。窘蛛虾乍爰葶逼稍咸哪妞程序框架:组群粥霎纥姻执乞妤盟豁放哇匿壮熨袁硎豚淠檑穗/*sqstack.cpp*/袷辏殿殪拟舜吊翼庭坩骐/*文件名:sqstack.cpp */虹胄蕲杖司钳驰稣辨昊膘#include殁秕才复讣筱骟冖愉谵挠#include魔垮发跽虽讫娘舌狩古骏/栈的顺序存储表示卟兄涮眯惶饲挑识荤呃娃typedef int selemtype;恧查酏牡孜众卩他裣斜舍const stack_init_size=100; /顺序栈(默认的)初始分配最大空间量怵奏诘蛔薹抖维环沈政涅typedef str
45、uct烈湾滠牒咆嫁泄静翠碲乙selemtype *elem; /存储数据元素的数组嘲痊淖澳蟹枞牟需赅锰捻int top; /栈顶指针椿邻匏洒匕勹瘾沿笃闸骑int stacksize; /当前分配的最大容量频桃榨椿倬锬弑魑佩殊滴sqstack;货昕猪鸠誓杲倪孀堞暮驽void initstack_sq(sqstack &s, int maxsize=stack_init_size)蜢睽失荛迁易祷壬夜嘻敛/构造一个空栈s,初始分配的最大空间为maxsize嘿唤感麂忄觏恹迩茴煤矍 舷煨荪聚坎轰我胎皋靥裨void clearstack_sq(sqstack &s) /释放栈s砷缂咀堍蜘淇展偕人状巍 傻钎
46、茄彷愉羸酋酉懒煺鸟int stacklength_sq(sqstack s) /返回栈s的元素个数照崤绐缸鼢稚舟蘸靖歇窦 辉鬲懒西麟堕氛氓弃窒干int stackempty_sq(sqstack s) /判断栈s是否为空,是则返回1,否则返回0廾挣中荚尉晡朦丧导栓撑 缀寨肷立鳆穹湿赖舞善佃void push_sq(sqstack &s, selemtype e) /元素e进栈秘谄檩阝御凄训任呢耍泮 遴浮麋臀敕玉溆溘药秆旰bool pop_sq(sqstack &s, selemtype &e)颟琼卧佳瘙捩朱乙放专旦/若栈不空,元素出栈,用e返回其值,并返回true,否则返回false笤舶眇刹癍
47、罹蔬许固胭胞 宦燕姚毳玫眙爽笺痹鳓定bool gettop_sq(sqstack s, selemtype &e)菀棉通馗碰祢螗俸悦湄掏/若栈不空,则用e返回s的栈顶元素,并返回true;否则返回false拯苹邸调俗揄僻食蒂寮界 锔怼缎膝锱怂葩谱桊嗔婉void stacktraverse_sq(sqstack s) /从栈顶到栈底依次输出元素瞎蛉鳕喙仟胲尖癸斤菖彼 屑统锒扦钠殖睫捆袂狙柑/主函数益仨图蒲籁碌涪嘀禾魑待void main()我克讦谓陀告鳗赭樊迷宫断迈铜氨铀庋鸺陈忄麝惴芹朦乏寄褚助秒塌胝寐喀辟雇莉舂恢瘌凌害邛亍微辩堵觖堂蝎餍晦莜弄枪3.3.5 实验分析与思考疴豚筷炕踹埃蝰套卷傥史1
48、)实验过程中,所设计的程序遇到哪些语法错误,特点是什么?遇到哪些逻辑错误,采用什么调试技巧解决的?聚栋害谇龈樵钼霸坳膛肼2)分析不同存储结构下入栈、出栈函数的复杂度。笾黄虢庞改赌后懦揽酵凯3)对比总结为什么一般情况下链式栈不带头结点而单链表要带头结点?撑畦秆入协觎伦艽温喁周3.4实验4 队列的顺序、链式存储锶囡徇边眦松腐巫萄努渠3.4.1 实验类型跗桨腮檬遑塔晏迨壤跪兵设计研究型胪熹猜驺檗陟恁痰倨栓筑3.4.2 实验目的箩拐箜她榉饩事陡宕沦温 理解队列的逻辑结构及其特点;酝烂锌氰舵蚱碜宜汇铿戊 掌握队列的顺序存储、链式存储结构的特点;吱狷绛彬唧峒僦鳓钼乒纳 熟练掌握入队列和出队列操作。莶戴螵铿
49、酐戤耪窟硕疥迎3.4.3 背景知识扛犟菝蜊泰评激玎败马芹队列是限定只能在表的一端进行插入,在表的另一端进行删除的线性表。表中允许插入的一端称做队尾(rear),允许删除的一端称做对头(front)。派痘白坠烘剽檀庇杠您赣顺序循环队列队列满的条件为:(rear+1)%maxqueuesize=front;恨挥模愠授床垮飘奄撩惹顺序循环队列队列空的条件为:rear=front。茨皖哇行基段蛾瓴豺茫毋3.4.4 实验内容暨窘跑戒废皖莒沧但翅泸基本要求:彰韫谴刿骶讥榛裴茵捋昂1) 用c语言编程描述队列的顺序存储结构;碲摒栅锨汲鹑廛啬癯椤旆2) 编写程序判断一个字符序列是否为“回文”,例如“abba”和
50、“abcba”是回文,“abcde”和“ababab”则不是回文;棉靼掠诽痹尜绌步氓慧睬3) 用c语言编程描述队列的链式存储结构并编程判断一个字符是否为“回文”。淦写淦价掳畔濉伏粽丙捞实验提示:渎勋兢囤腾潘践嗜澌讼咙1) 在vc环境下建立工程,添加空文件,初步建立程序框架;钭顶猪版啁森砝椁褪钞怒2) 编写程序实现队列的各种基本操作函数,在此过程中即可编译程序,检查语法上的错误;馁胞涡俗款猫梆拍菇毹曾3) 建立主程序;寮筠枝遨墒短磷枵撮恐琶4) 编译、连接、运行;嘎意辙跚纂埭魄腕咋谍卫程序框架:较鬣仰厩蕾图卧殂衽艄右劓砟腆瞳稚肿喹间廓拖径/*sqqueue.cpp*/馑狂伧萏兽鼙疆羰散些妒井蜮腩
51、补疬肪醯漉款琶佗/*文件名:sqqueue.cpp */镳醴噤待娠钸煲推阗仝伞#include庵唳缶捷疰抗蹇菔释隗雌#include蜷惴黪壬蝼买且皆癀骢潺/循环队列的顺序存储表示禹肉嗪体匝烁驳洎傅碛珉typedef int qelemtype;辟螈徙粳神莳慰稼醍迨醋const queue_init_size=100; /循环队列(默认的)初始分配最大空间量杼岈枥苷谳彝舅判拧埕疴嗪蟊吲诬江词勒包神邴钚typedef struct芥镀厩瀣吧揿荚慨嚷邙掴qelemtype *elem; /存储队列元素的数组菇蒿筠艘尚垮呦舛髦赎惺int front; /头指针,若队列不空,指向队列头元素候孬浆珊屠璧菌
52、承穑耔塘int rear; /尾指针,若队列不空,指向队列尾元素的下一个位置采奠兴倏尥鲲罕叁闶岽卯int queuesize; /循环队列当前的最大容量阎堪漱力儇葳骶落烧刭虺sqqueue;个耜摺崖暖较谳饥耥新队污蓿殖耗炊孙性誊柘娼墼void initqueue_sq(sqqueue &q, int maxsize=queue_init_size)崎筘鞠飘铅酱脸郾丝貊腆/构造一个空队列q,初始分配的最大空间为maxsize悒柄擗甲各诹蓉迢鳇菖咩 都善啪窖便戚谋秽谪蠡纬void clearqueue_sq(sqqueue &q) /释放队列q牝驶茇用俅钍趋丽蹶会揣 彀摞虍冱互匝挛鲟腕楷暧int queuelength_sq(sqqueue q) /返回队列q的元素个数盐呸泌涛鹏榕褂胍拽仡涨 鹰燥瑷恂豪蝶袅熨奢来泣int queueempty_sq(sqqueue q) /判断队列q是否为空,是则返回1,否则返回0喙耋让泶韩鹰瓶缌铊壕邋 熹嫘嶂栅鲢吃拶擤易粗婆void enqueue_sq(sqqueue &q, qelemtype e) /插入元素e为q的新的队尾元素忱拘笏蹒柏翡镰且棕臀熙 凝笛醯讠蛩葬礴都律岘沏bool enqueue_sq(sqqueue &q, qelemtype &e)橇缅貂牛题镇淬雷裳酵妮/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆抵押贷款合同终止程序合同
- 住宅小区环境卫生满意度调查合同
- 住宅小区车位租赁及管理专项合同
- 文化创意园区工作室租赁协议
- 品牌跨界联名推广合作协议
- 公共停车场使用权及广告位合作开发合同
- 车辆抵押贷款合同(含融资租赁)
- 离婚财产分割与子女抚养、房产分割及债务处理协议
- 铝合金散热片采购合同模板
- 生态旅游区场地调研与环境保护合同协议
- 工程造价咨询服务入围供应商招标文件模板
- 服装表演音乐游戏课程设计
- 理工英语3-01-国开机考参考资料
- 2022年版初中物理课程标准解读-课件
- 头颅常见病影像
- 漫画解读非煤地采矿山重大事故隐患判定标准
- 2024年建筑业10项新技术
- 《客舱安全与应急处置》-课件:颠簸的原因及种类
- 《养老护理员》-课件:老年人卫生、环境、食品安全防护知识
- 健康体检科(中心)规章制度汇编
- DB11-T 2207-2023 市政桥梁工程数字化建造标准
评论
0/150
提交评论