数据结构实验指导书-09版_第1页
数据结构实验指导书-09版_第2页
数据结构实验指导书-09版_第3页
数据结构实验指导书-09版_第4页
数据结构实验指导书-09版_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

李劲朱艳萍金鑫秦(本实验项指导书的编写受“教育部人才培养模式创新实验区”项目资助本书是以《数据结构》09版课程教学大纲和实验教学大纲为指导,分别从实验(包含ABC三个级别的实验)的九个方面(实验目的、问题描述、基本要求、CDIO项目要求、实验内容、实现提示、参考程序、教学环节组织以及思实验题目作进一步的解释;CDIOCDIO详细设计的目的是对子程序(过程或函数)IFWHILE程序的每一行最好不超过60个字符。每个子程序(或过程、函数)不要太长,以40行为宜。子程序(或过程、函数)包含的程序行数太多,容易造成理解的。控制IF、WHILE等语句的连续嵌套的深度。程序的目的性必须明确。对每一段程序完成的作用,除非常明显的除外(如:xx1;注 实验一抽象数据类型设计与实及构造复数;个人完成,评分最高70分。B:A人完成,评分最高至90分。合运算。由2-3个人的团队完成,评分最高可至100分。一个抽象数据类型ADT就是:数据+操作,例如CpxNum其数据部分包括设z1=a+bi,z2=c+di,(a,b,c,d∈R,以下不再说明□加减法:(abi)±(cdi)=(ac)+(b□乘法:(abi)*(cdi)=(acbd)+(ad abi(abi)(cdi)(acbd)(bcad)icdi c2d2 c2d2typedefstructdouble_real;//复数的实部/*复数类型接口函数的定义部分,此部分对cpxNum类型的使用者公开/*用doublerdoublei初始化复数/*以‘1+2i或1-3i’的形式将复数c输出到控制台窗口*/voidprint(cpxNum&c);/*实现两个复数c1,c2的加法,和作为函数cplus的返回值*/cpxNumcplus(constcpxNum&c1,constcpxNum&c2);/*实现两个复数c1,c2的减法,差作为函数cmilus的返回值/*实现两个复数c1,c2的乘法,积作为函数cmultiply的返回值*/cpxNumcmultiply(constcpxNum&c1constcpxNum&/*实现两个复数c1,c2的乘法,商作为函数cdivide的返回值*/cpxNumcdivide(constcpxNum&c1,constcpxNum&c2);{result._real=c1._real+c2._real;result._imag=c1._imag+c2._imag;returnresult;}int_tmain(intargc,_TCHAR*{doublereal,cin>>real>>imag;assign(c1realimag初始化‘复数’c1cout<<"您生成的第一个复数是:";coutendl请输入第二个复数的实部和虚部cin>>real>>imag;assign(c2realimag初始化‘复数’c2cout<<"您生成的第二个复数是:";cout<<cout<<"c1+c2的结果是:";print(cplus(c1,c2));cout<<endl;cout<<"c1-c2的结果是:";print(cmilus(c1,c2));cout<<endl;cout"c1*c2的结果是print(cmultiply(c1c2coutendl;cout<<"c1/c2的结果是:";print(cdivide(c1,c2));cout<<endl;降序输出多项式;个人完成,评分最高70分。评分最高至90分。的求解,包括判断是否有解、如果有解,输出基础解系及通解2-31003A(x)73x3B2(x)=-A3(x)B2(x)9x81x7(0.2)x1A3(x)B2(x)9x8(1)x76.2x1A3(x)*B2(x)9x15(28.8)x93x87x7(9.6)x2A3(1.0)*B2(1.0)hA(x)73xhClass8913891307Class007 typedefstructLNode{float_coef;多项式的系数int_expn;//多项式的指数structLNode*_next;typedefLink_head,_tail;指向多项式链表的‘头结点’、‘尾结点’的指针int_len;//多项式链表中除去头结点后的结点数,即多项式的项数typedefLinkListPolynomial定义一元稀疏多项式类型/*根据用户输入的多项式的系数和指数floatcoef,intexpn,生成多项式结点,boolMakeNode(Link&p,floatcoef,intvoidInitList(LinkList&L);voidDestroyList(LinkList&vector<double>&coef,vector<int>&expon生成一元稀疏多项式链表voidCreatPolyn(Polynomial&p,vector<double>&coef,vector<int>&voidDestroyPolyn(Polynomial&34X^100+45X^60–4X^2+3*/voidPrintPolyn(constPolynomial&voidAddPolyn(Polynomial&Pa,Polynomial&Pb,Polynomial&PSum);voidSubPolyn(Polynomial&Pa,Polynomial&Pb,Polynomial&PSub);voidMultiplyPolyn(Polynomial&Pa,Polynomial&Pb,Polynomial&4B→tAdA;A→sae;(ehnxgz)→则魔王语言B(ehnxgz)B解释成tsaedsaeezegexenehetsaedsae12(包含产生式中的大写字母及1个括3难度12...m(12...n)nn1Asae(θδ1δ2δn)θδnθδn-1意义的人类语言(中文;个人完成,评分最高至90分。1001、将魔王的语言自右至左进栈,总是处理栈顶字符。若是开括号,则逐一2 #defineSTACK_INIT_SIZE100//栈元素的初始空间大#defineSTACK_INCREMENTtypedefchartypedefstructSElemType*base;SElemType*top;//顺序栈的栈顶指针intStackSize;//栈元素空间的大小

boolInitStack(SqStackvoidDestroyStack(SqStack&S);boolClearStack(SqStackboolStackEmpty(SqStack&S);intStackLength(SqStack&S);boolGetTop(SqStack&S,SElemType&e);boolPush(SqStack&S,SElemTypeboolPop(SqStack&S,SElemType&e); #defineMAXQSIZE100typedefstruct{QElemType*base;//指向循环队列元素空间的指intfront;intrear;//循环队列的队尾指针

boolInitQueue(SqQueueintQueueLength(SqQueue&Q);boolEnQueue(SqQueue&Q,QElemTypeboolDeQueue(SqQueue&Q,QElemType&e);stringBeelzebubLangcout<<"请输入魔王语言串:";cin>>SqStackChStack;//定义一个字符栈变量ChStackSqQueueChQueue;ChQueueSqStackTransLang;for(inti=0;i<BeelzebubLang.size();i++){case}}//endcasecase'A':{}//endcase')':{//说明需要处理 }//endcasecase'(':{//}default:TransLang}}//end}//end4(符合规则,有意义的字符)实验 数组的表示及其应以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和。设【CDIO项目要求【实验内容】印迷宫中各个位置的状态。个人完成,评分最高70分。B:A终点的通路;个人完成,评分最高90分。C:B2-3100int struct{intm,n; arr[RANGE]}voidInitMaze(MazeType&maze,inta[][],introw,intboolMazePath(MazeType&maze,PosTypestart,PosTypevoidPrintMaze(MazeTypemaze)typedef directiveType ) typedefstructNodeType{ElemType struct{LinkTypetop;intStack;StatusMazePath(MazeTypemaze.PosTypestart,PosType{InitStack(S);curpos=start; jf FootPrint(maze,curpos);e=(curstep,curpos,1); ifSame(curpos,endfound curstep ) if(Pop (e.di==4&&!StackEmpTycurstep Push(S,e); curpos=NextPos(e.seat,e.di}returnfound;之一。树结构的特点在于“非线性”。本实验单元继续突出数据结构+操作构评分最高70分。B:A高至90分。难度C:实现一个简单的哈夫曼编码/译,能根据一段电文设计赫夫曼typedefstruct emTypedatastructBiTNode*lchild,*rchild;StatusCreateBiTree(BiTree//构造二叉链表表示的二叉树TemTypescanf("%c",&chif(ch==’’elseT=(BiTree)malloc(sizeof(BiTNodeT->data=ch;//将值赋给TCreateBiTree(T->lchildCreateBiTree(T->rchild}ReturnT存在,VisitT,对每个结点调用函数VisitInOrderTraverse(T->lchild,Visit)Visit(T->data);//再根结InOrderTraverse(T->rchild,Visit)}}{//采用二叉链表结构,Visit是对数据元素操作的应用函数T的非递归算法(利用栈),对每个数据元素调用函数VisitSqStackS;BiTreeInitStack(S);//初始化栈SPush(S,T);//根指针进栈while(!StackEmpty(Swhile(GetTop(S,p)&&p)Push(S,p->lchildPop(S,p);//空指针退栈,退掉最栈的空指针if(!StackEmpty(S))//结点,向右一步Pop(S,pVisit(p->data);//刚弹出的结点(目前栈顶元素的左孩子)Push(S,p->rchild);//入栈其右孩子指针}}}分析待编码的电文中出现的字符集,并统计各字符出现的频度(作为权值利用已建立好的哈夫曼树对正文进行编码,并显示编码结利用已建立好的哈夫曼树对编码后的代码进行译利用教科书例6-2中的数据的编码和译码“THISPROGRAM FVORITEABCDEFGHIJK15LMNOPQRSTUVW8X1YZ1实验 图及其应从某筑到另筑的最短路径。(最短路径问题使用户可以不重复地浏览各建筑,最后回到出口(出口就在旁边【实验内容】实现校园内主要地点的遍历。个人完成,评分最高70分。评分最高90分。成,评分最高可至100分。【实现提示】2.构造一个无向图G并用邻接矩阵来p[i][]d[i]存放;i的范围:0~20。一维数组#include"string.h"#include"stdio.h"#include"stdio.h"#include"malloc.h"#include"stdlib.h"#defineMax20000#defineNUM9int /*相邻接的建筑之间的路程 /*定义边的类型*/typedefstructVertexType{int /*建筑编号char*sight; /*建筑名称*/char*description/**/ /**/typedefstruct{ArcCellarcs[NUM][NUM];/*图中的边,即为建筑间的距离*/ um;/*顶点数,边数*/ /*定义图的类型*/MGraphG; /*把图定义为全局变量*/intP[NUM][NUM]; longintD[NUM]; /*辅助变量最短路径长度*/ voidCreateUDN(intv,inta);/*造图函数*/voidnarrate(); voidShortestPath(intnum);/*最短路径函数*/voidoutput(intsight1,intsight2*输出函数*/char();/*主菜单*/voidsearch(); /*查询建筑信息*/charSearenu(); /*查询子菜单*/ /*哈密尔顿图的遍历*/ display(/**/voidmain()/*主函数*/{intv0,v1;charck;system("colorfc");{{case(0~8:");(0~8:"); /*计算两个建筑之间的最短路径*/ /*输出结果*/printf("\n\n\t\t\t\t请按任意键继续caseprintf("\n\n\t\t\t\t请按任意键继续...\n");} /*主菜单{charc;printf("\t\t\t\t请输入您的选择:");returnc;}CC++语言设计并实现动态查找表中的二叉排序树的建立与查找,包【实验内容】难度A:设计一个可进行动态查找表的二叉排序树的建立与查找的演示程序,包括新结点的插入和删除等操作;个人完成,评分最高70分。和查

温馨提示

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

评论

0/150

提交评论