还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
河南省高等教育自学考试实验报告册运算机及应用专业(本科段)《数据结构》姓名准考证号所属地市实验地址实验日期2实验总成绩指导教师签名实验单位(实验室)意见主考院校审核意见河南科技大学自学考试办公室2021年9月21日char vertex;edgenode*edgelink;;struct graph{vexnode adjlists[maxvernum]int vexnum;int arcnum;;ertex;g-adjlists[i].edgelink二null;cout〃开始输入边表信息〃endl;for k=0;kg-arcnum;k {cout〃请输入边vi,vj对应的极点〃;cinij;pl=new edgenode;pl-endver=j;pl-edgenext=g-adjlists[i].edgelink;g-adjlists[i].edgelink=pl;p2=new edgenode;p2-endver=i;p2-edgenext=g-adjlists[j].edgelink;g-adjlists[j].edgelink二p2;ertex,z〃;visit[i]=l;edgenode*p=new edgenode;p=g-adjlists[i].edgelink;ifg-adjlists[i].edgelink!visit[p-endver]{dfsg,p-endver,visit;}void dfstraversalgraph*g,char c ertex==certex,z〃visit[e]=l;edgenode*p=new edgenode;p=g-adjlists[e].edgelink;if pint m=p-endver;if m==0enqueueq,m;while visit[m]=0p=p-edgenext;if p二二null break;m=p-endver;enqueueq,m;}}void bfstraversalgraph*g,char ccout〈〃该图的广度优先遍历结果为:〃〈endl;int visited[maxvernum];for int i=0;ig-vexnum;i {visited[i]=o;intm;for i=0;ig-vexnum;i {if g-adjlists[i].vertex二二cm=i;bfs g,i,visited;break;}
五、实验内容功能•随机输入假设干整数成立一个线性表,查找指定节点的位置;•按升序输入假设干整数成立一个有序表查找指定节点的位置;•随机输入假设干整数成立一个二叉排序树,查找指定节点的位置;输入要求先输入表中结点的个数n,然后输入n整数测试数据(略)
六、数据查找
(一)、实验目的把握在线性表上进行顺序查找、二分查找的算法实现和在二叉排序树上的查找算法的实现
(二)、程序清单()int tsearchsstable st,int key{))ey returnmid;ey high=mid-1;ey=key;printf(请输入第%d个数,大于%d\n,n,[i-l].key);scanf(h%dn,key);;=i}printf(请输入要查的数:\n);scanf(n%dn,key);()postion=search_bin t,key;printf(此数的位置是%d\nn,postion);
(三)、实验中显现的问题及解决方式随机输入假设干整数成立一个二叉排序树,查找指定节点的位置二叉树查找代码容易犯错实验四排序
一、实验学时2学时
二、实验目的把握对一批记录进行排序的各类算法,包括直接插入排序法、冒泡排序法、直接选择排序法和快速排序法
三、实验原理排序的方式
四、实验设备:本实验在586以上的微机上进行,运行环境为turboc.
五、实验内容功能•随机输入假设干整数,按直接插入排序法排序并输出;•输入假设干整数,按冒泡排序法排序并输出;•随机输入假设干整数,按直接选择排序法排序并输出;输入要求任意输入n整数测试数据(略)
六、选做题目对快速排序、希尔排序、堆排序进行比较
(一)、实验目的把握对一批记录进行排序的各类算法,包括直接插入排序法、冒泡排序法、直接选择排序法和快速排序法
二、程序清单#include#includewincludeottdefine m20/*****把排序之前的数输入到指定文件夹中*****/void writefilelint*a,int n{file*fp;int i;char filename
[10];printf〃请输入要输出的文件名称包括后缀名\n〃;getsfilename;if fp=fopenfilename,zzw,z==nullfprintf不能打开文件!\n;fprintf〃排序之前*****\n〃;fori=l;i=n;i fprintf zz=/z,a[i];}/*****把用各类排序方式排序后的数输入到指定文件夹中*****/void writefile2int int n{file*fp;int i;char filename
[10];fprintf〃请输入要输出的文件名称包括后缀名\n〃;getsfilename;if fp=fopen filename,/zw/z==nullfprintf不能打开文件!\n;printf〃排序以后*****\n〃;fori=l;i=n;i printf zz=〃,a[i];a
[0]=-l;}void createint*a,int*b,int*n{int i,;srandunsignedtimenull;for i=0;in;i {a[i]=rand;b[i]=a[i];printfz,�〃,a[i];}/***1*****插入排序**********/void insertsortint*a,int n{int i,j;for i=2;i〈=n;i {a
[0]=a[i];for j=i-l;a
[0]a[j];j—a[j l]=a[j];a[j l]=a
[0];}}void xiersortint*a,int n{int d
[3]={5,3,1};int i,j,k=0;while k3{for i=d[k] l;i=n;i {a
[0]=a[i];forj=i-d[k];j0a[j]a
[0];j=j-d[k]a[j d[k]]=a[j];a[j d[k]]=a[o];}k ;}void maopaosortint*a,int n{int i,j,change,t;fori=l;in;i {change=0;forj=l;j=n-i;j ifa[j]a[j l]{t=a[j];alj]=a[j l];a[j l]=t;change=l;}if change==0break;}}void quicksortint*a,int t,int n{int i=t,j=n;while ij{{a
[0]=a[i];whileija[j]a
[0]j-;{a[i]=a[j];i ;}whileija[i]a
[0]i ;ifij{a[j]=a[i];j—;}}a[i]=a[o];quicksort a,1,i-l;quicksort a,i 1,n;}}void jiandansortint*a,intn{int i,j,t;fori=l;in;i {forj=i l;j=n;j ifa[i]a[j]{t=a[i];a[i]=a[j];a[j]=t;void adjustint intlow,int top{int j;a
[0]=a[low];forj=2*low;j=top;j*=2{ifjtopa[j]a[j hj ;ifa[j]a
[0]{a[low]=a[j];low=j;a[low]=a
[0];void duisortint*a,int nfori=n/2;i0;i一adjust a,i,n;fori=n;il;一一ia[l]=a[i];{printf〃%5d〃,a[l];adjust a,1,i-l;printf〃贴d〃,a[i];void maininta[m l],b[m l],n=0,i;char chi=y,ch2;create a,b,n;while chl==,y「ch]二二,y,{printf〃\n输入1插入排序〃printf〃\n输入2希尔排序〃printf〃\n输入3冒泡排序〃printf\n输入4快速排序〃printf〃\n输入5简单排序〃printf〃\n输入6堆排序〃;printf〃\n输入c c从头产生随机数〃;printf〃\n输入nn退出\n〃;
一、实验报告要求1
二、实验一单链表的操作2
三、实验二图的遍历操作6
四、实验三数据查找9
(二)、实验中显现的问题及解决方式随机输入假设干整数模块要注意程序循环的排列,能够让结果按直接选择排序法排序并输出实验报告要求
1、实验报告应包括以下内容1程序清单2实验结果3分析与讨论
2、实验报告应写明实验名称、班号、实验者姓名、学号、将实验报告整理装订好,按指导教师规定的时刻上交大体实验方式本实验环节要求学生能够顺利完成《数据库原理》、《数据结构》、《操作系统》、《面向对象程序设计》及门课程的实验操作实验所用器件、设备的简单介绍所有实验在586以上的微机上进行,运行环境为vfp、c语言、c 语言和windows linux操作系统实验一单链表的操作
一、实验学时2学时
二、实验目的熟悉数据库在链式存储结构下各类算法的实现
三、实验设备:本实验在586以上的微机上进行,运行环境为turboc语言
四、样例(参看《实践性环节培训与考核大体要求》p2)
五、实验内容功能•成立一个数据域寄存的是字符串的单链表;•输入一个指定的字符串,插入到单链表的指定位置;•删除单链表中制定的字符串;•遍历单链表输入要求输入n个字符串(长度小于6),成立含有n个节点的单链表,要求输入的字符串不重复测试数据成立时n=5(red,green,yellow,blue,black)插入时orange(在第五个节点以后插入)删除时:blue
(一)、实验目的:}while1;熟悉数据库在链式存储结构下各类算法的实现/iz*£**1**lzlz*lz*1**1*«、、/*1**lzviz*lz*lz*1**lz ll/\r1*slz%lz%fz%lz%lzslz*lz six%iz*lz*lz//xj%xjx xjxxjxxj%zjx xj%xjx ijwgx✓pxzjx zj%zjxzyx xjs/
(二)、程序清单listnode*createl/ir1^1r-4-//不不不不不不不不不不不不不不不不不不不l111k1-/1ol不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不/ttinclude#include{int j;ttinclude listnode*head,*s,*r;#define n5struct node{charhead=listnodetypedef data
[8];struct node*mallocsizeoflistnode;r二*next;}listnode;head;r-next=null;printfa\n请输入%d个字符串”,n;for/*******函数挪用说明*******/j=l;j=n;j listnode*createl;{prilistnode*getnode;ntf字void travelo;符串%d:j;void insertlo;s=listnovoid deletel;de*malloc/it\c^|~^rt kix//•i*^rfv/mainsizeoflistnode;{int k,j;scanf%s,s-data;listnode*head,*p;printf“成立单链表:r-next=s;head=createl;do{printfn
0.退出\n”);r-next=null;printf〃遍历单链表\n〃);return head;请选择:printf〃单链表的插入\n〃);printf〃单链表的删除//zjs#tsxtszjsztsxlsxgsxjsxtsxts ztsztsxtszjsl/iih1/1ztszlszjszjsxts/void printf〃travellistnode*head\n〃);〃);{listnode*p;scanf%d,k;switch kp=head-〉next;;while case0:exit0;pcase1:travellhead;break;{printf〃%s〃,p-data;case2:insertlhead;break;p=p-next;case3:deletelhead;二/7z a//xix✓txxtxxlxrxxixxix✓tx*tpi_i/\✓tx xixzlxtxtxzlx/void insertllistnode*headchar ch
[8];int k;listnode*p,*s;printf\n输入要插入的字符串”;scnaf%s,ch;;printfu\n输入要插入的位置;scanf“%d,k;p=getnodehead,k-1;if p=null{printf positionerror!/z;exit0;s=listnode*mallocsizeoflistnode;strcpy s-data,ch;s-next=p-next;p-next=s;/vt**,1*kl*kl*vl*4414*11lvr*.1**,1*kl*kl*%l*klz//个个个个个个个个个个个个个个个个个个个个7iijij dtk个个个个个个个个个个个个个个个个个个/void deletellistnode*head{char ch
[8];listnode*p,*q;printf\n输入要删除的字符串;scnaf%s”,ch;;printf\n查找它之前的位置”;p=head;whielp-next{q=p-next;if!strcmpq-data,ch break;p二q;}if p-next{p-next=q-next;freeq;else printfnot found;///zjszjsx7sxjxztsxtxztsztsxtsxjsxtxzlszjsxjsxts^ts1i*1xtxzrsztsztsztsx7sxjs✓txztvzjszjszjsztsztxzrszts/listnode*getnodelistnode*head,inti{int j;listnode*p;p二head;j=0;whilep-nextji{p=p-next;j ;}if i=jreturn p;elsereturn null;/xlzsix sixsixsixsixxjxsixx£*s£*fxsixxtx sixsixxlzsixsixlx sixlxsixsixsixxlz//xtx✓tx✓rxrx✓txxtx xjxxixxtxxixxtx xtxxtxxvxxrxxrxxix✓rxxjx xtxxtxxx✓jx xtxxtxxfxxix/
(三)、实验中显现的问题及解决的方式输入n个字符串(长度小于6),成立含有n个节点的单链表,要求输入的字符串不重复要细心查看实验二图的遍历操作
一、实验学时2学时
二、实验目的采纳邻接矩阵存储方式的无向图的深度优先遍历和广度优先遍历算法的实现
三、实验原理图的大体运算
四、实验设备:本实验在586以上的微机上进行,运行环境为turboc.
五、实验内容功能•成立一个极点信息是字符的无向图;•输出深度优先遍历的结果;•输出广度优先遍历的结果;输入要求先输入极点数和边数,然后输入极点信息和每条边对应的两个极点的序号测试数据68abcdef0103122433445565
六、选做内容编写一个途径遍历算法,求出从北京到哈尔滨途中不通过郑州的所有简单途径,测试数据为教科书中图,起点为北京
七、图的遍历操作
(一)、实验目的采纳邻接矩阵存储方式的无向图的深度优先遍历和广度优先遍历算法的实现
(二)、程序清单ttincludeo#define maxvernum50struct edgenode{int endver;int inform;edgenode*edgenext;);struct vexnode。