数据结构实验报告Word文档下载推荐.docx

上传人:b****6 文档编号:20510633 上传时间:2023-01-23 格式:DOCX 页数:77 大小:765.64KB
下载 相关 举报
数据结构实验报告Word文档下载推荐.docx_第1页
第1页 / 共77页
数据结构实验报告Word文档下载推荐.docx_第2页
第2页 / 共77页
数据结构实验报告Word文档下载推荐.docx_第3页
第3页 / 共77页
数据结构实验报告Word文档下载推荐.docx_第4页
第4页 / 共77页
数据结构实验报告Word文档下载推荐.docx_第5页
第5页 / 共77页
点击查看更多>>
下载资源
资源描述

数据结构实验报告Word文档下载推荐.docx

《数据结构实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告Word文档下载推荐.docx(77页珍藏版)》请在冰豆网上搜索。

数据结构实验报告Word文档下载推荐.docx

序号

实验项目编号

实验名称

学时

必做

选做

学分数

实验类型

内容提要

基本操作

验证

综合

设计

1

抽象数据类型的表示与实现

2

线性表实验

4

线性表的存储实现及有关应用

3

栈和队列实验

栈和队列的基本操作及其实现,以及典型应用举例

稀疏矩阵实验

稀疏矩阵的压缩存储

5

树和二叉树实验

树的两种种存储结构,及各种操作的算法实现(建立、遍历、线索化、最优二叉树)

6

图及其应用实验

图的两种基本存储结构,及各种操作的算法实现(建立、遍历、图的典型应用)

7

查找和排序实验

各种基本的查找和排序算法及其实现分析

四、实验内容安排:

实验一抽象数据类型的表示与实现

(验证性实验2学时)

1.目的要求:

1)熟悉类C语言的描述方法,学会将类C语言描述的算法转换为C源程序实现;

2)理解抽象数据类型的定义,编写完整的程序实现一个抽象数据类型(如三元组)。

3)认真阅读和掌握本实验的参考程序,上机运行程序,保存和打印出程序的运行结果,并结合程序进行分析。

2.实验内容:

1)编程实现抽象数据类型三元组的定义、存储、基本操作(最大值、最小值、平均值等的求解),并设计一个主菜单完成各个功能的调用。

Main.cpp

#include"

opretation.h"

stdio.h"

voidmain()

{

TripletT;

init(T);

}

operation.h

#ifndefxxxx

#definexxxx

 

#defineTRUE1

#defineFALSE0

#defineOK1

#defineERROR0

#defineINFEASIBLE-1

#defineOVERFLOW-2

typedefintStatus;

typedefintElemType;

typedefElemType*Triplet;

StatusInitTriplet(Triplet&

T);

//构造并赋值

StatusDestroyTriplet(Triplet&

//销毁

StatusGet(TripletT,inti,ElemType&

e);

//返回第i的值

StatusPut(Triplet&

T,inti,ElemTypee);

//改变第i的值

StatusIsAscending(TripletT);

//若为升序,则返回1,否返回0

StatusIsDescending(TripletT);

//若为降序,则返回1,否返回0

StatusMax(TripletT,ElemType&

//返回最大值

StatusMin(TripletT,ElemType&

//返回最小值

Statusinit(TripletT);

#endif

Operatation.h

hanshu.h"

stdlib.h"

Statusinit(TripletT)

inti,e;

charchoice;

printf("

1.InitTriplet构造并赋值\n"

);

2.DestroyTriplet销毁\n"

3.Get返回第i的值\n"

4.Put改变第i的值\n"

5.IsAscending若为升序,则返回1,否返回0\n"

6.IsDescending若为降序,则返回1,否返回0\n"

7.Max返回最大值\n"

8.Min返回最小值\n"

请输入你所选择的功能的序号:

"

fflush(stdin);

scanf("

%c"

&

choice);

switch(choice)

{

case'

1'

:

InitTriplet(T);

break;

2'

DestroyTriplet(T);

break;

case'

3'

printf("

请输入您想显示的数的位数:

"

%d"

i);

Get(T,i,e);

4'

请输入您想改变的数的位数:

请输入您想改成的整数:

scanf("

Put(T,i,e);

5'

IsAscending(T);

6'

IsDescending(T);

7'

Max(T,e);

8'

Min(T,e);

default:

请重新选择:

//选择序号输入错误时,提示重新选择

}

return0;

T)//构造并赋值

intv1,v2,v3;

请输入三个整数:

%d%d%d"

v1,&

v2,&

v3);

T=((ElemType*)malloc(3*sizeof(ElemType)));

//分配3个元素的储存空间

if(!

T)exit(OVERFLOW);

//分配空间失败

T[0]=v1;

T[1]=v2;

T[2]=v3;

getchar();

system("

CLS"

//清屏

returnOK;

T)//销毁

free(T);

T=NULL;

e)//返回第i的值

if(i<

1||i>

3)

returnERROR;

e=T[i-1];

当前位的数值为:

e);

T,inti,ElemTypee)//改变第i的值

当位目前的数值为:

%d\n"

T[i-1]);

T[i-1]=e;

修改后的结果为:

StatusIsAscending(TripletT)//若为升序,则返回1,否返回0

{

intx;

若为升序,则显示1,否则显示0\n"

x=(T[0]<

=T[1])&

&

(T[1]<

=T[2]);

x);

StatusIsDescending(TripletT)//若为降序,则返回1,否返回0

若为降序,则显示1,否则显示0\n"

x=(T[0]>

(T[1]>

e)//返回最大值

e=(T[0]>

=T[1]?

((T[0]>

=T[2]?

T[0]:

T[2])):

(T[1]>

T[1]:

T[2]));

最大值为:

returnOK;

e)//返回最小值

e=(T[0]<

((T[0]<

(T[1]<

最小值为:

3.主要仪器设备及药品

2)PC机

3)TurboC2.0或VisualC++ 

实验二线性表实验

(验证性实验4学时)

1)熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;

2)以线性表的各种操作(建立、插入、删除等)的实现为重点;

3)通过本次实习帮助学生加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。

4)认真阅读和掌握本实验的参考程序,上机运行本程序,保存和打印出程序的运行结果,并结合程序进行分析。

按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果。

3.实验内容:

1)编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。

顺序存储:

main.cpp

#include<

stdio.h>

#include"

SqlistL;

1.Initlist创建\n"

2.ListInsert插入\n"

3.ListDelete删除\n"

4.Serch查找\n"

5.exit结束\n"

while

(1)

\n"

x);

switch(x)

{

case1:

Initlist(L);

////创建

break;

case2:

printf("

请输入您想插入的数字e="

scanf("

ListInsert(L,e);

//插入

break;

case3:

ListDelete(L,e);

//删除

case4:

Serch(L,e);

//查找

case5:

exit(OVERFLOW);

//结束

default:

}

}

#definelistinitsize100

#definelistincrement10

typedefstruct

ElemType*elem;

intlength;

intlistsize;

}Sqlist;

StatusInitlist(Sqlist&

L);

//创建

StatusListInsert(Sqlist&

L,ElemTypee);

//插入

StatusListDelete(Sqlist&

L,ElemType&

StatusSerch(SqlistL,ElemType&

Opretation.h

init.h"

L)//创建

inti;

L.elem=(ElemType*)malloc(listinitsize*sizeof(ElemType));

L.elem)

exit(OVERFLOW);

L.length=0;

L.listsize=listinitsize;

L.elem[0]=1;

L.elem[1]=2;

L.elem[2]=3;

L.elem[3]=4;

L.elem[4]=5;

已存数据为:

for(i=0;

i<

=4;

i++)

%d"

L.elem[i]);

L.length=5;

L,ElemTypee)//插入

ElemType*newbase;

ElemType*p,*q;

inti,j;

请输入您想插入的位置i="

L.length+1)

if(L.length>

=L.listsize)

newbase=(ElemType*)realloc(L.elem,(L.listsize+listincrement)*sizeof(ElemType));

if(!

newbase)

L.elem=newbase;

L.listsize+=listincrement;

q=&

(L.elem[i-1]);

for(p=&

(L.elem[L.length-1]);

p>

=q;

--p)

*(p+1)=*p;

*q=e;

++L.length;

//printf("

%d\n"

L.length);

for(j=0;

j<

L.length;

j++)

L.elem[j]);

e)//删除

请输入您想删除的位置i="

if((i<

1)||(i>

L.length))

p=&

e=*p;

删除的数为%d\n"

q=L.elem+L.length-1;

for(++p;

p<

++p)

*(p-1)=*p;

--L.length;

%d\n"

e)//查找

请输入您想查找的位置i="

e=L.elem[i-1];

查找结果e=%d\n"

链式存储:

Main.cpp

#include<

LinkListL;

inti,e,n;

intchoi;

主菜单:

1.Create构造并赋值\n"

2.Insert插入\n"

3.Delete删除\n"

4.Serch查找\n"

5.Put显示所有数据\n"

6.exit退出系统\n"

请输入您选择的功能"

choi);

switch(choi)

case1:

输入要写入的元素个数:

n);

GreateList_L(L,n);

请输入要插入的位置:

请输入要插入的数:

ListInsert_L(L,i,e);

n++;

//插入增加一个

请输入要删除的位置\n"

ListDelete_L(L,i,e);

n--;

//删除减少一个

请输入你想查询的数的位置\n"

GetElem_L(L,i,e);

case5:

所有数据为:

\n"

Put_L(L,n);

case6:

exit(ERROR);

default:

/}

Opretation.cpp

StatusGreateList_L(LinkList&

L,intn)//创建

LinkListp,q;

L=(LinkList)malloc(sizeof(LNode));

p=L;

请输入您想输入的数值

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1