您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构实验报告+-+副本
江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第1页实验一C语言编程实验名称:实验一C语言编程实验目的:复习C语言程序设计,回顾C语言结构数据及指针数据的应用。实验原理:C语言结构化程序设计思想,结构数据类型,指针数据类型。实验设备:电脑,TURBOC2.0/WIN-TC/VISUALC++实验内容:1.某组有10个人,每个人有3门课的考试成绩。求该组单科的平均成绩和各科总平均成绩。2.用指针变量输出结构数组,结构数组存放了5个学生的信息,学生的信息包括学号、姓名、性别和入学分数。1.实验代码:#includestdio.hvoidmain(){floata[11][4],sum=0;inti,j;for(i=0;i10;i++){printf(请输入第%d个学生的3门课成绩:,i+1);for(j=0;j3;j++)scanf(%f,&a[i][j]);}printf(各门课的平均成绩:\n);for(j=0;j3;j++){sum=0;for(i=0;i10;i++)sum=sum+a[i][j];a[10][j]=sum/10.0;printf(第%d门课的平均成绩是:%6.2f\n,j+1,a[10][j]);}for(i=0;i3;i++){sum=0;江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第2页for(j=0;j10;j++)sum+=a[i][j];a[i][3]=sum/3.0;printf(第%d个学生各科总平均成绩:%6.2f\n,i+1,a[i][4]);}}实验结果:2.实验代码:#includestdio.hstructstudent{intnum;charname[20];charsex;floatscore;};structstudentstu[5]={{001,aji,'M',98},{002,baobiao,'F',72},{003,heipi,'F',99},{004,erliu,'M',79},{005,wazhi,'M',80}};江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第3页voidmain(){structstudent*p;printf(No.Namesexscore\n);for(p=stu;pstu+5;p++)printf(%5d%-20s%2c%6.2f\n,p-num,p-name,p-sex,p-score);}实验结果:实验心得:本次试验,利用数据结构及指针计算十个学生的单科平均成绩和总的平均成绩。试验中定义二维变量a【11】【4】,输入十个学生的成绩,分别存储在数组变量a[][]中,通过语句sum=0;for(i=0;i10;i++)sum=sum+a[i][j];a[10][j]=sum/10.0;十个学生的平均成绩存放在a[i][j]数组中,利用printf输出平均成绩,然后重新定义sum,存放各个学生的总成绩,取平均成绩输出。实验二顺序存储实验名称:实验二顺序存储实验目的:掌握线性表顺序存储结构的描述,学会针对顺序存储线性表的基本操作。实验原理:C语言结构化程序设计思想,结构体及数组的应用。江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第4页实验设备:电脑,TURBOC2.0/WIN-TC/VISUALC++实验内容:1、输入两组有序序列,建立两个有序顺序表,将它们合并,且保持有序。实验代码:#includestdio.h#defineMAXSIZE100typedefintdatatype;typedefstruct{datatypea[MAXSIZE];intsize;}list;voidinit(list*s){s-size=0;}voidappend(list*s,datatypex){if(s-size==MAXSIZE)printf(overflow.\n);else{s-a[s-size]=x;s-size++;}}voiddisplay(list*s){inti;if(s-size!=0){for(i=0;is-size;i++)printf(%5d,s-a[i]);}elseprintf(listisnull.\n);}voidmerge(list*la,list*lb,list**lc)江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第5页{inti=0,j=0,k=0;while(ila-size&&jlb-size)if(la-a[i]lb-a[j])(*lc)-a[k++]=la-a[i++];else(*lc)-a[k++]=lb-a[j++];while(ila-size)(*lc)-a[k++]=la-a[i++];while(jlb-size)(*lc)-a[k++]=lb-a[j++];(*lc)-size=la-size+lb-size;}voidmain(){lists,h,*k,d;datatypex;init(&s);k=&d;init(&h);init(k);printf(请输入表S的内容:\n);scanf(%d,&x);while(x!=0){append(&s,x);scanf(%d,&x);}printf(请输入表h的内容:\n);scanf(%d,&x);while(x!=0){append(&h,x);//原该处h表写成了s表scanf(%d,&x);}merge(&s,&h,&k);江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第6页display(k);printf(\n);}实验结果实验心得:本次实验很好的体现了函数调用技术,先通过函数init()初始化,然后利用merge(list*la,list*lb,list**lc)进行排列,最后display函数显示输出结果。通过本次实验了解了顺序存储的方式以及如何实现数据的大小排列,很好掌握了函数调用的技巧。实验三链式存储实验名称:实验三链式存储实验目的:掌握线性表链式存储结构的描述,学会针对链式存储线性表的基本操作。实验原理:C语言结构化程序设计思想,结构体及指针的应用。实验设备:电脑,TURBOC2.0/WIN-TC/VISUALC++实验内容:1、已知两个依元素值递增有序排列的链表A和B,且同一表中的元素值各不相同。构造一个单链表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。实验代码:江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第7页#includestdio.h#includemalloc.h#defineMAXSIZE100typedefintdatatype;typedefstructlindnode{datatypeinfo;structlindnode*next;}node;node*init(){returnNULL;}voidcreat(node**head){node*r,*s;datatypex;*head=r=(node*)malloc(sizeof(node));printf(\n创建链表:\n);scanf(%d,&x);while(x){s=(node*)malloc(sizeof(node));s-info=x;r-next=s;r=s;scanf(%d,&x);}r-next=NULL;}voiddisplay(node*head){node*p;p=head-next;if(!p)printf(kong\n);else{while(p){printf(%5d,p-info);p=p-next;江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第8页}}}voidinter(node*A,node*B,node**C){node*pa=A-next,*pb=B-next,*s,*r;(*C)=(node*)malloc(sizeof(node));(*C)-next=NULL;r=(*C);while(pa!=NULL&&pb!=NULL){if(pa-infopb-info)pa=pa-next;elseif(pa-infopb-info)pb=pb-next;else{s=(node*)malloc(sizeof(node));s-info=pa-info;s-next=NULL;r-next=s;r=s;pa=pa-next;pb=pb-next;}}r-next=NULL;}voidmain(){node*head,*p,*q;head=init();p=init();q=init();creat(&head);creat(&p);inter(head,p,&q);display(q);江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第9页}实验结果:实验心得:本次实验很好的体现了链式排列的方式,通过本次实验,很好的掌握了链式排列的方法,并且加深了指针变量的使用方法。实验四模式匹配算法应用实验名称:实验四模式匹配算法应用实验目的:掌握字符串存储结构的描述,学会字符串的模式匹配算法的应用。实验原理:C语言结构化程序设计思想,结构体及指针和字符数组的应用。实验设备:电脑,TURBOC2.0/WIN-TC/VISUALC++实验内容:1、朴素模式匹配算法2、快速模式匹配算法实验代码:1、朴素模式匹配算法#includestdio.h江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第10页#defineMAXSIZE100typedefstruct{chardata[MAXSIZE];intlength;}string;voidinit(string*s){s-length=0;}voidinput(string*s){charc;inti;i=0;scanf(%c,&c);while(c!='\n'){s-data[i++]=c;scanf(%c,&c);}s-length=i;}intpipei(strings,stringt){inti,j;i=0;j=0;while(is.length&&jt.length){if(s.data[i]==t.data[j]){i++;j++;江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:郑睿颖第11页}else{i=i-j+1;j=0;}}if(j=t.length)returni-t.length;elsereturn-1;}voidmain(){strings,t;init(&s);init(&t);printf(pleaseinputstrings:);input(&s);printf(pleaseinputstringt:);input(&t);intk=pipei(s,t);if(k==-1)printf(stringtisnotinstrings.\n);elseprintf(stringtisinstrings.%d\n,k);}2、快速模式匹配算法#includestdio.h#defineMAXSIZE100typedefstruct{chardata[MAXSIZE];intlength;江西科技师范大学实验报告3年级1班号姓名宋会兵同组姓名实验日期15年12月14日成绩指导老师:
本文标题:数据结构实验报告+-+副本
链接地址:https://www.777doc.com/doc-2334074 .html