您好,欢迎访问三七文档
1《数据结构》实践考核报告专业:计算机及应用准考证号:姓名:考点:西安电子科技大学考试时间:2009-5-25一、实验目的上机考核实践考核检测对数据结构该课程掌握的程度,消化课程内容,加深理解数据结构的基础概念、基本理论和基本方法。二、实验环境1.硬件:CPUP42.4G内存:256M硬盘:40.G2.软件:VC++三、实验考核内容单元一:线形数据结构上的基本运算描述及实现。(1)顺序表上基本算法的运算描述及实现。#defineListSize100typedefintDataType;typedefstruct{DataTypedata[ListSize];intlength;}SepList;voidSet(SepList*L){L-length=0;}voidInsertList(SepList*L,DataTypex,inti){intj;if(i1||iL-length+1)Error(positionerror);if(L-length=ListSize)Error(overflow);for(j=L-length-1;i=i-1;j--)L-data[j+1]=L-data[j];L-data[i-1]=x;L-length++;}voidCovers(SepList*L){inti;DataTypetemp;for(i=0;iL-length/2;i++){temp=L-data[i];2L-data[i]=L-data[L-length-i-1];L-data[L-length-i-1]=temp;}voidOut(SepList*L){inti;for(i=0;iLength;i++)printf(%d,L-data[i]);}main(){intx,i,y=0;charch=ASeqlist*L;set(L);while(y!=5){printf(choicenum:\n1:iscreatelist:\n2:isinsertlist:\n)printf(3:isdeletelist:\n4:isCoverslist:\n);printf(5:isend:\n);scanf(%d,&y);if(y==1){printf(creatalistandinputinitdata:)scanf(%d,&y);L-length=x;for(i=0;ix;i++){scanf(%d,&x);L-data[i]=x;}printf(listis:);Out(L);printf(\n);elseif(y==2){printf(inputdatainsertandpositioni:);scanf(%d,&x);scanf(%d,&i);InsertList(L,x,i);Out(L);printf(\n);}elseif(y==3){printf(inputdeleteposition:);scanf(%d,&x);DeleteList(L,x);Out(L);printf(\n);}elseif(y==4){printf(conversis:);Convers(L);Out(L);}elseif(y==5)exit(0);scanf(%d,&y);}}(2)单链表上基本算法的运算描述及实现。#includestdio.h#includestdlib.h#definenull0structstu{chardata;structstu*next;};main()/*主函数3*/{intx,x1;charch;structstu*head,*p,*s,*q,*h,*z;printf(现在开始建立链表....请输入字符:\n);/*开始建立链表*/head=(structstu*)malloc(sizeof(structstu));p=head;p-next=null;ch=getchar();while(ch!='\n'){s=(structstu*)malloc(sizeof(structstu));s-data=ch;p-next=s;p=s;p-next=null;ch=getchar();}/*建立后输出*/printf(建立后的链表为:\n);p=head;output(p-next);p=head;aa:printf(\n);printf(***************************\n);printf(**\n);printf(**\n);printf(*1.插入2.删除*\n);printf(**\n);printf(**\n);printf(*3.逆转4输出*\n);printf(**\n);printf(**\n);printf(*其它:退出*\n);printf(**\n);4printf(**\n);printf(***************************\n);printf(\n);printf(请输入您想做的操作的序号:);scanf(%d,&x);/*switch函数*/switch(x){case1:printf(请输入你要插入的字符和位置:\n);scanf(%s%d,&ch,&x1);insert(p,ch,x1);/*调用insert函数*/gotoaa;break;case2:printf(请输入你要删除的字符:);gotoaa;scanf(%s,&ch);delete(p,ch);/*调用delete函数*/break;case3:printf(逆转后的链表为:);coverse(p);/*调用coverse函数*/gotoaa;break;case4:printf(输出后的链表为:);gotoaa;output(p-next);break;default:exit();}/*调用output函数*/printf(\t谢谢使用!\n);}/*主函数结束*/insert(structstu*p,charch1,intx)/*insert函数*/{inti,j,k;structstu*q,*h,*s;q=p-next;h=p;i=2;j=1;while(q){q=q-next;j++;}/*j为链表的长度*/q=p-next;if(x=j+1)printf(插入位置有错,原链表为:\n);else{while(x=j+1&&i=x){q=q-next;h=h-next;i++;}s=(structstu*)malloc(sizeof(structstu));s-data=ch1;5h-next=s;s-next=q;}output(p-next);/*输出插入后的链表*/}/*insert函数结束*/delete(structstu*p,charch)/*delete函数开始*/{intk;structstu*q;q=p;k=0;while(q){while(q-next-data==ch)q-next=q-next-next;q=q-next;k=1;}printf(删除后的链表为:);if(k==0)printf(没有找到你要删除的字符!\n);output(p-next);}/*delete函数结束*/coverse(structstu*p)/*coverse函数开始*/{structstu*q,*head1,*s;q=p-next;head1=null;while(q){s=(structstu*)malloc(sizeof(structstu));s-data=q-data;s-next=head1;head1=s;q=q-next;}q=head1;output(q);/*coverse函数结束*/}/*output函数开始*/output(structstu*p){if(p==null)printf(链表为空\n);while(p){printf(%c,p-data);p=p-next;}/*output函数结束*/}实验结果:6现在开始建立链表....请输入字符:asdfgh建立后的链表为:asdfgh********************************1.插入2.删除******3.逆转4.输出******其它:退出********************************请输入您想做的操作的序号:1请输入你要插入的字符和位置:x2axsdfgh********************************1.插入2.删除******3.逆转4.输出******其它:退出********************************请输入您想做的操作的序号:2请输入你要删除的字符:x删除后的链表为:asdfgh********************************1.插入2.删除*****7*3.逆转4.输出******其它:退出********************************请输入您想做的操作的序号:3逆转后的链表为:hgfdsa********************************1.插入2.删除******3.逆转4.输出******其它:退出********************************请输入您想做的操作的序号:4输出后的链表为:asdfgh********************************1.插入2.删除******3.逆转4.输出******其它:退出********************************请输入您想做的操作的序号:5谢谢使用!Pressanykeytocontinue单元二:栈与队列结构上的基本算法描述及实现。(1)链栈上的基本算法描述及实现#includestdio.h#includestdlib.h8definenull0structstacknode{chardata;structstacknode*next;}node;main(){charx,ch;inti;structstacknode*top,*s,*q;printf(现在开始建立链栈....请输入字符:\n);top=(structstacknode*)malloc(sizeof(structstacknode));top=null;q=top;x=getchar();while(x!='\n'){s=(structstacknode*)malloc(sizeof(structstacknode));s-next=top;s-data=x;top=s;x=getchar();}q=top;printf(建立后的链栈为:);display(q);aa:printf(\n);printf(**********链栈基本算法实现**********\n);printf(**\n);printf(*1.加入2.删除*\n);printf(*3.查看4.显示*\n);printf(*其它:退出*\n);printf(**\n);printf(****************************\n);printf(\n);printf(请输入您想做的操作的序号:);scanf(%d,&i);switch(i){case1:printf(请输入你要加入的字符:\n);9scanf(%s,&ch);enstack(q,ch);gotoaa;printf(\t谢谢使用!);break;case2:if(stackempty(q))printf(栈空,不能删除!);elseprintf(删除的元素为:%c\n,destack(q));printf(删除后的栈为:);display(q-next);gotoaa;printf(\t谢谢使用!);break;case3:if(stackempty(q))printf(栈空,没有元素!);els
本文标题:7数据结构实验报告
链接地址:https://www.777doc.com/doc-5973452 .html