还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计说明书题目数据结构与算法课程设计学院(系):专业班级学号学生指导教师教师职称起止时间课程设计(论文)任务及评语printfHTesting functionIXnPress anykey tocontinue\n;getcharO;getcharO;break;case6:outr;printfnTesting functionIXnPress anykey tocontinue\nn;getcharO;getcharO;break;caseT:changer;outr;printfnTesting functionIXnPress anykey tocontinue\nn;getcharO;getcharO;break;case0,:flag=0;printfnThe end.\nn;break;default:printfn\nWrong Selection!选择错误,请重选!\n;getcharO;getcharO;void createliststruct stucode W{struct stucode*p,米t;long n;char a
[20];double si,s2;ifGr圻=NULL;printfC\n请输入\n学号分数1分数2若要结束请输入四个为零\n;scanf%ld%s%lf%1fn,n,a,sl,s2;ifn==0return;p=L*mallocsizeofL;p-student.num=n;strcpyp-student.name,a;p-student.scorel=sl;p-student.score2=s2;p-next=NULL;*r=p;scanfn%ld%s%lf%lff,,n,a,sl,s2;t=p;p=L*mallocsizeofL;p-student.num=n;strcpyp-student.name,a;p-student.scorel=sl;p-student.score2=s2;p-next=NULL;t-next=p;scanfn%ld%s%lf%lff,,n,a,sl,s2;void searchistruct stucode*rlong x;struct stucode*p=r;if!r{printf没有学生信息可查询!\n;return;printfC请输入要查询的学生信息的学生学号\n;scanfn%ldn,x;p=p-next;ifp-NULLprintfnError!No suchstudent!\nn;elseprintfu%ld%s%.2If%.21f\nn,p-student.num,p-student.name,p-student.score1,p-student.score2;void search2struct stucode米rIchar m
[20];if!rprintf没有学生信息可查询!\n;return;}printfC,请输入要查询的学生信息的学生:\n;scanfn%s,m;whilerstrcmpr-student.name,mr=r-next;ifr-NULLprintfError!No suchstudent!\n;else printfn%ld%s%.2If%.21f\nn,r-student.num,r-student.name,r-student.score1,r-student.score2;void delstruct stucode Wlong k;struct stucode*p二*r,米t;if!竹{printfC没有学生信息可删除!\n;return;printfn请输入要删除的学生信息的学生学号\nn;scanfM%ldH,k;ifp-student.num=二k*r=*r-next,freep;else{whi1ep-nextp-next-student.num!=k p=p-next;ifp-next二二NULLprintfnError!No suchstudent!\nn;elset=p-next;p-next=p-next-next;freet;void insertstruct stucode W{long n;char a
[20];doub1e si,s2;L*p,*t,*k;printfC请输入要插入的学生信息的学生学号分数1分数2:\n;scanf H%1d%s%1f%1fn,n,a,sl,s2;p=L*mallocsizeofL;p-student.num=n;p-student.scorel=sl;p-student.score2=s2;strcpyp-student.name,a;if!狂{*r=p;*r-next=NULL;return;ifp-student.num*r-student.nump-next=米r,米r=p;else1t=*r;k二t;whilet-nextt-next-student.num=p-student.num t=t-next;p-next=t-next;t-next=p;*r=k;|void outstruct stucode米r{printf C*\n\nn;if!r{printf没有学生信息可输出!\n”;return;whiler printfn%ld%s%.2If%.21f\nn,r-student.num,r-student.name,r-student.score1,r-student.score2;r=r-next;|printf\n\nn;void changestruct stucode米米r{struct stucode*p=米r;long x;long n;char a
[20];doub1e si,s2;printf更改的学生的信息\n”;printfC请输入要查询的学生信息的学生学号\n;scanfu%ld\x;whilepp-student.num!=xp=p-next;ifp-NULLprintfnError!No suchstudent!\nn;elseprintfH%ld%s%.2If%.21f\nn,p-student.num,p-student.name,p-student.score1,p-student.score2;printfC请输入要修改的学生信息:\n;scanf(n%1d%s%1f%1fH,n,a,sl,s2);p-student.num=n;()strcpy p-student.name,a;p-student.scorel=sl;p-student.score2=s2;}()void menu{printf(n\n学生成绩管理系统\n”);printf(n\n菜单\n\rT);printf(n\n1建立链表\n”);printf(\n2查找某学号的学生信息\n);printf(\n3查找某的学生信息\n);printf(n\n4删除某学号的学生信息\n”);printf(\n5插入新的学生信息\n);printfC*\n6显示所有学生的个人信息\示);printf(n\n7更改学生个人信息\n”);printf(n\n0退出\n”);printfC*\n请选择您要执行的选项\n);4程序的输入和输出学生成绩管理系统菜单[建立链表查找某学号的学生信息2查找某姓名的学生信息3删除某学号的学生信息4插入新的学生信息5显示所有学生的个人信息6更改学生个人信息7退出0请选择您要执行的选项院(系)教研室软件工程学号学生专业班级课程设计(论文)数据结构与算法课程设计题目1•从十个题目中选择一个题目,,要求每个题目用标准的C语言程序实现,另外,完成思考题一题,思考题须写出相应的类C算法即可课程2•每个题目编写源程序时,要求有主菜单,每个子功能定义为相应的子函数,在设计主函数中调用各子函数,程序结构清晰论文3•根据题目,选择合适的逻辑结构和存储结构任务4•输入的数据由键盘输入5♦分析算法的时间复杂度,要求算法的效率尽可能高6•验证排序算法的稳定性[建立链表查找某学号的学生信息2查找某姓名的学生信息3删除某学号的学生信息4插入新的学生信息5显示所有学生的个人信息6更改学生个人信息7退出0请选择您要执行的选项2请输入要查询的学生信息、的学生学号:101002Testing function1Press anykey tocontinue按学生查找建立链表1查找某学号的学生信息2查找某姓名的学生信息3删除某学号的学生信息4插入新的学生信息5显示所有学生的个人信息6更改学生个人信息7退出请选择您要执行的选项3请输入要查询的学生信息、的学生姓名:liTesting function1Press anykey tocontinue图3删除某学生的运行结果建立链表1查找某学号的学生信息2查找某姓名的学生信息3删除某学号的学生信息4插入新的学生信息5显示所有学生的个人信息6更改学生个人信息7退出请选择您要执行的选项请输入要删除的学生信息、的学生学号:101002插入某学生的运行结果建立链表i查找某学号的学生信息2查找某姓名的学生信息3删除某学号的学生信息4插入新的学生信息5显示所有学生的个人信息6更改学生个人信息7退出请选择您要执行的选项请输入要插入的学生信息、的学生学号姓名分数]分数52101002li3992101图5显示所有学生的信息[建立链表查找某学号的学生信息2查找某姓名的学生信息3删除某学号的学生信息4插入新的学生信息5显示所有学生的个人信息6更改学生个人信息7退出请选择您要执行的选项5调试程序中遇到的问题及解决方案在调试searchi子函数由于在查找中移动了原指针,导致searchi中不能查找,解决方法设一结构体类型的指针,将原指针赋给该指针,将该指针迸行移动查找在调试chance中,如何对已有的记录进行从新输入更改解决方案为在chance子函数中加入一个查找的程序,也就是说先找到要修改的学生信息,用scanf语句对要修改的学生的信息进行重新输入,再将所赋的信息通过赋值语句将修改后的学生信息赋给该学生对应的结构体如何返回一个结构休息,解决方案是采用指针类型,将变量的地址作为实参赋给子函数数组名代表数组首地址,用scanf语句赋值字符串时,不用加地址操作符
2.3思考题解析所选择的思考题编写一个算法,构造一棵哈夫曼树程序如下typedef struct{unsigned intweight;unsigned intparent,Ichi Id,rchiId;}HTNode,*HuffmanTree;typedef char**HuffmanCodevoid HnffCodedingHnf fmanTreeHT,HC,int*w,int nifn=l return;m=2*n-l;HT=HuffmanTreemallocm+l*sizeofHTNode;forp=HT;i=l;i=n;++i,++,++w*p={*w,0,0,0};for;i=m;++i,++p米p={*w,0,0,0};fori=n+1;i=m;++i{SelectCHT,i-l,sl,s2;HT[sl].parent=i;HT[s2].parent=i;HT[iJ.lchild=sl;HT[iJ.rchild=s2;HT[i].weight=HT[sl].weight+HT[s2].weight;}HOHuffmanCodemallocn+l*sizechar米;cd=char*mallocn*sizeofchar;cd[n-l]=0;fori=l;i=n;++istart=n-l;forc=i;f=HT[i].parent;f!=0;c=f,f=HT[f].parentifHT[f].lchild==c cd[--start]=n0!,;else cd[—start]=n ln;HC[i]=char*mallocn-start*sizeofchar;;strcpyHC[i],cd[start]}freecd;算法分析哈夫曼树构造方法如下1根据给定的n个权值{W1,W2,…….Wn}构成n课二叉树的集合F={T1,T2……..Tn},其中每棵二叉树Ti中只有一个带权为Wi的根节点,其左右子树均为空2在F中选取两棵节点的权值最小的树为左右之树构造一棵新的二叉树,且置新的二叉树的根结点的权值为左右子树上根结点的权值之和3在F中删除这两棵树同时将得到的二叉树加入F中4重复2和3,直到F只含一棵树为止哈夫曼树优点1总平均码长最短;2任一个字符的的编码的前缀都不是另一个字符的编码的前缀3提高信道利用率,节省发报时间总结通过本次课程设计,使我学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的容,培养我们的理论和实践相结合的能力,分析问题解决问题的能力同时,在实验步骤规化、程序设计方法等方面受到比较系统和规的训练通过实践设计使我们迸一步加深对程序设计的规化及对复杂程序设计步骤的理解通过课程设计,加深对《数据结构》这一课程所学容的进一步理解与巩固并通过课程设计,加深对结构化设计思想的理解,能对系统功能迸行分析,并设计合理的模块化结构,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序,训练C程序调试能力,能将一个查找表调试通过,并掌握系统研发全过程,培养分析问题、解决实际问题的能力通过本次课程设计我对结构体,指针有了更深的了解,提高了程序设计的能力在本次课程设计中,我遇到了很多问题,这不仅使我在专业知识上有了很大的提高,同时也增强了我的逻辑思维能力和动手实践的能力,培养了我面对问题的处理心态,使我在个人素质方面也有了很大的提高本人签字参考文献
[1]严蔚敏.数据结构..清华大学.2002年8月
[2]谭浩强.C程序设计..清华大学.2005年7月
[3]春葆著.数据结构教程.清华大学.2005年1月
[4]严蔚敏,吴伟民编著,数据结构,.清华大学,
1997.4
[5]朱战立,选平编著.数据结构学习指导和典型例题..交通大学,
2002.4指导教师评语及成绩成绩指导教师签字2012年月日
1.1课程设计目的
31.2课程设计的实验环境
31.3课程设计的预备知识
31.4课程设计要求2第章课程设计容
222.1题目的选择
22.2题目的具体实现
22.3思考题解析19总结:22参考文献错误!未定义书签第1章课程设计目的与要求
1.1课程设计目的本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课本实践课的主要目的是使学生学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的容,培养学生理论和实践相结合的能力,培养学生分析问题解决问题的能力同时,在实验步骤规化、程序设计方法等方面受到比较系统和规的训练通过实践设计使学生迸一步加深对程序设计的规化及对复杂程序设计步骤的理解通过课程设计,加深对《数据结构》这一课程所学容的进一步理解与巩固通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过通过课程设计,开发一个中小型系统,掌握系统研发全过程通话课程设计,培养分析问题、解决实际问题的能力
1.2课程设计的实验环境PC机,W indowsXP,C++°
1.3课程设计的预备知识C语言程序设计、数据结构
1.4课程设计要求1认真查找资料,分析每个题目应选择的数据结构逻辑结构和物理结构;2按时到实验室调试程序,遵守实验室的规章制度,爱护设备;3每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰,有必要的注释,可读性强4程序健壮性强,当数据输入错误时,要进行相应的欠理;5分析算法的时间复杂度,要求算法的效率尽可能高;6对于排序算法,要验证排序算法的稳定性第2章课程设计容
2.1题目的选择
6、学生成绩管理系统
2.2题目的具体实现1题目应实现的具体功能;
①录入学生成绩信息并保存;©可查询显示所有学生的个人信息;
③可查询显示所有学生的所学课程信息;
④按学号或查询成绩信息;
③能添加、删除和修改学生的成绩信息;2题目所选择的数据结构及存储结构;采用线性数据结构及链式存储结构3完整的源程序#includestdio.h#includestdlib.h#includestring.hstruct studlongnum;char name
[20];doub1e scorel,score2;typedef structstucode structstud student;structstucode*next;}L;void menu;void createliststructstucode米米r;void outstructstucode*r;void searchistructstucode米r;void search2structstucode米r;void delstructstucodeW;void insertstructstucodeW;void changestructstucodeW;void maincharchoose;int flag=l;structstucode*r=NULL;whileflag{systemnclsn;menu;choose=getchar;switchchoose{case,T:createlistr;outr;printfnTesting functionIXnPress anykey tocontinue\nn;getcharC;getcharO;break;case2:searchlr;printfnTesting functionIXnPress anykey tocontinue\nn;getcharO;getcharO;break;case3:search2r;printfnTesting functionIXnPress anykey tocontinue\nn;getcharO;getcharO;break;case4’:delr;outr;printfnTesting functionIXnPress anykey tocontinue\nn;getcharO;getcharO;break;case5:insertr;outr;。
个人认证
优秀文档
获得点赞 0