数据结构实验报告.docx
- 文档编号:27306659
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:13
- 大小:41.84KB
数据结构实验报告.docx
《数据结构实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
数据结构实验报告
实验一C语言编程
实验名称:
实验一C语言编程
实验目的:
复习C语言程序设计,回顾C语言结构数据及指针数据的应用。
实验原理:
C语言结构化程序设计思想,结构数据类型,指针数据类型。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1.某组有10个人,每个人有3门课的考试成绩。
求该组单科的平均成绩和各科总平均成绩。
2.用指针变量输出结构数组,结构数组存放了5个学生的信息,学生的信息包括学号、姓名、性别和入学分数。
实验代码:
实验结果:
实验心得:
实验二顺序存储
实验名称:
实验二顺序存储
实验目的:
掌握线性表顺序存储结构的描述,学会针对顺序存储线性表的基本操作。
实验原理:
C语言结构化程序设计思想,结构体及数组的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、输入两组有序序列,建立两个有序顺序表,将它们合并,且保持有序。
实验代码:
实验结果:
实验心得:
实验三链式存储
实验名称:
实验三链式存储
实验目的:
掌握线性表链式存储结构的描述,学会针对链式存储线性表的基本操作。
实验原理:
C语言结构化程序设计思想,结构体及指针的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、已知两个依元素值递增有序排列的链表A和B,且同一表中的元素值各不相同。
构造一个单链表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。
实验代码:
实验结果:
实验心得:
实验四模式匹配算法应用
实验名称:
实验四模式匹配算法应用
实验目的:
掌握字符串存储结构的描述,学会字符串的模式匹配算法的应用。
实验原理:
C语言结构化程序设计思想,结构体及指针和字符数组的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、朴素模式匹配算法
实验代码:
#include"stdio.h"
intprim(chars1[],chars2[])
{
inti,j;
i=0;
while(s1[i]!
='\0')
{
j=0;
while(s2[j]!
='\0'&&s1[i+j]==s2[j])
j++;
if(s2[j]=='\0')
returni;
i++;
}
return-1;
}
voidmain()
{
chars1[80],s2[20];
intn;
gets(s1);
gets(s2);
if((n=prim(s1,s2))>=0)
printf("s1中存在子串s2,从第%d个字符起\n",n+1);
else
printf("s1中不存在子串s2\n");
}
实验结果:
实验心得:
实验五特殊矩阵
实验名称:
实验五特殊矩阵
实验目的:
掌握特殊矩阵存储结构的描述,学会针对特殊矩阵的基本操作。
实验原理:
C语言结构化程序设计思想,结构体及数组的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、稀疏矩阵的存储及转置运算
实验代码:
#include"stdio.h"
#defineMAXSIZE12500
typedefintElemType;
typedefstruct
{
inti,j;
ElemTypee;
}Triple;//三元组类型
typedefunion
{
Tripledata[MAXSIZE+1];
intmu,nu,tu;
}TSMatrix;//稀疏矩阵类型
voidFastTransposeSMatrix(TSMatrixM,TSMatrix*T)
{
intnum[MAXSIZE],cpot[MAXSIZE];
intcol,t,p,q;
T->mu=M.nu;
T->nu=M.mu;
T->tu=M.tu;
if(T->tu)
{
for(col=1;col<=M.nu;++col)
num[col]=0;
for(t=1;t<=M.tu;++t)
++num[M.data[t].j];
cpot[1]=1;
for(col=2;col<=M.nu;++col)
cpot[col]=cpot[col-1]+num[col-1];
for(p=1;p<=M.tu;++p)
{
col=M.data[p].j;
q=cpot[col];
T->data[q].i=M.data[p].j;
T->data[q].j=M.data[p].i;
T->data[q].e=M.data[p].e;
++cpot[col];
}
}//if
}//FastTransposeSMatrix
voidmain()
{
TSMatrixM,T;
inti;
scanf("%d%d%d",&M.mu,&M.nu,&M.tu);
for(i=1;i<=M.tu;i++)
scanf("%d%d%d",&M.data[i].i,&M.data[i].j,&M.data[i].e);
FastTransposeSMatrix(M,&T);
for(i=1;i<=T.tu;i++)
printf("%5d%5d%5d\n",T.data[i].i,T.data[i].j,T.data[i].e);
}
实验结果:
实验心得:
实验六内排序
实验名称:
实验六内排序
实验目的:
通过本次实验,掌握线性表的排序方法,并分析时间复杂度。
实验原理:
C语言结构化程序设计思想,数组的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、将快速排序算法写成完整的程序上机通过,并统计递归深度。
实验代码:
实验结果:
实验心得:
实验七树与二叉树
实验名称:
实验七树与二叉树
实验目的:
1.进一步掌握树的结构及非线性特点,递归特点和动态性。
2.进一步巩固对指针的使用和二叉树的三种遍历方法、建立方法及用广义表进行输入输出。
实验原理:
C语言结构化程序设计思想,二叉树的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、二叉树的实现和遍历
实验代码:
实验结果:
实验心得:
实验八图的遍历
实验名称:
实验八图的遍历
实验目的:
熟悉图的存储结构,掌握有关算法的实现,了解图在计算机科学及其他工程技术中的应用。
实验原理:
C语言结构化程序设计思想,图的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、给定一个图,设计一个程序,找出一条从某一顶点A到另一顶点B边数最少的一条路径。
实验代码:
实验结果:
#include
intnumber;
typedefstruct{
intq[20];
intf,r;
}queue;
intnodelist[20][20];
queueQ;
intz[20];
inta,b,n,i,j,x,y;
intfinished;
voidenq(queue*Q,intx){
Q->q[Q->r]=x;
if(Q->r==19)
Q->r=0;
else
Q->r++;
if(Q->r==Q->f)
printf("Overflow!
\n");
}
front(queue*Q){
if(Q->r==Q->f)
printf("Underflow!
\n");
else
return(Q->q[Q->f]);
}
voiddeq(queue*Q){
if(Q->r==Q->f)
printf("Underflow!
\n");
else{
if(Q->f==19)
Q->f=0;
else
Q->f++;
}
}
intqempty(queueQ){
if(Q.f==Q.r)
return1;
else
return0;
}
voidreadgraph(){
printf("\nPleaseinputn:
");
scanf("%d",&n);
printf("Pleaseinputnodelist[i][j]:
\n");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
scanf("%d",&nodelist[i][j]);
}
printf("\n");
printf("List-linkisbulit\n");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
printf("%3d",nodelist[i][j]);
printf("\n");
}
}
voidshortest(inta,intb){
if(a==b)
nodelist[a][a]=2;
else{
enq(&Q,a);
nodelist[a][a]=2;
finished=0;
while(!
qempty(Q)&&!
finished){
a=front(&Q);
deq(&Q);
j=1;
while((j<=n)&&!
finished){
if((nodelist[a][j]==1)&&(nodelist[j][j]!
=2)){
enq(&Q,j);
nodelist[j][j]=2;
z[j]=a;
if(j==b)/*&&(nodelist[a][j]==1))*/
finished=1;
}
if(!
finished)
j++;
}
}
if(!
finished)printf("Thereisnopath.");
}
}
voidwritepath(inta,intb){
i=b;
while(i!
=a){
printf("%d<-",i);
i=z[i];
}
printf("%d",a);
}
main()
{
readgraph();
printf("Pleaseinputa:
");
scanf("%d",&a);
printf("Pleaseinputb:
");
scanf("%d",&b);
Q.f=0;Q.r=0;
shortest(a,b);
if(finished)
writepath(a,b);
}
实验结果:
实验心得:
实验九检索
实验名称:
实验九检索
实验目的:
通过本次实验,掌握查找表上的有关查找方法,并分析时间复杂度。
实验原理:
C语言结构化程序设计思想,查找的应用。
实验设备:
电脑,TURBOC2.0/WIN-TC/VISUALC++
实验内容:
1、将折半查找算法写成完整的程序,并上机通过。
实验代码:
实验结果:
实验心得:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告