数据结构C语言版实验报告.docx
《数据结构C语言版实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构C语言版实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
数据结构C语言版实验报告
CKBOODwasrevisedintheearlymorningofDecember17,2020.
数据结构C语言版实验报告
数据结构(C语言版)实验报告
专业:
计算机科学与技术、软件工程
学号:
_______________________
班级:
_________软件二班______________
姓名:
________朱海霞______________
指导教师:
___刘遵仁________________
青岛大学信息工程学院
2013年10月
实验1
实验题目:
顺序存储结构线性表的插入和删除
实验目的:
了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。
实验要求:
建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。
实验主要步骤:
1、分析、理解给出的示例程序。
2、调试程序,并设计输入一组数据(3,-5,6,8,2,-5,4,7,-9),测试程序的如下功能:
根据输入的数据,找到相应的存储单元并删除,显示表中所有的数据。
程序代码:
#include<>
#include<>
#defineOK1
#defineERROR0
#defineOVERFLOW-2
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
typedefstruct{
int*elem;
intlength;
intlistsize;
}Sqlist;
intInitList_Sq(Sqlist&L){
=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!
return-1;
=0;
=LIST_INIT_SIZE;
returnOK;
}
intListInsert_Sq(Sqlist&L,inti,inte){
if(i<1||i>+1)returnERROR;
if=={
int*newbase;
newbase=(int*)realloc,+LISTINCREMENT)*sizeof(int));
if(!
newbase)return-1;
=newbase;
+=LISTINCREMENT;
}
int*p,*q;
q=&[i-1]);
for(p=&[]);p>=q;--p)
*(p+1)=*p;
*q=e;
++;
returnOK;
}
intListDelete_Sq(Sqlist&L,inti,inte){
int*p,*q;
if(i<1||i>returnERROR;
p=&[i-1]);
e=*p;
q=+;
for(++p;p<=q;++p)
*(p-1)=*p;
;
returnOK;
}
intmain(){
SqlistL;
InitList_Sq(L);ertex=a;irstedge=NULL;irstedge;
G->adjlist[i].firstedge=s;irstedge;
G->adjlist[j].firstedge=s;//将新结点*S插入顶点Vj的边表头部
}
}
//=========定义标志向量,为全局变量=======
typedefenum{FALSE,TRUE}Boolean;
Booleanvisited[MaxVertexNum];
//========DFS:
深度优先遍历的递归算法======
voidDFSM(ALGraph*G,inti)
{//以Vi为出发点对邻接链表表示的图G进行DFS搜索
给出你的编码
//==========BFS:
广度优先遍历=========
voidBFS(ALGraph*G,intk){//以Vk为源点对用邻接链表表示的图G进行广度优先搜索
给出你的编码
//==========主函数===========
voidmain()
{
inti;
ALGraph*G;
G=(ALGraph*)malloc(sizeof(ALGraph));
CreatALGraph(G);
printf("PrintGraphDFS:
");
DFS(G);
printf("\n");
printf("PrintGraphBFS:
");
BFS(G,3);
printf("\n");
}
实验结果:
1.邻接矩阵作为存储结构
2.邻接链表作为存储结构
心得体会:
实验6
实验题目:
二分查找算法的实现
实验目的:
掌握二分查找法的工作原理及应用过程,利用其工作原理完成实验题目中的内容。
。
实验要求:
编写程序构造一个有序表L,从键盘接收一个关键字key,用二分查找法在L中查找key,若找到则提示查找成功并输出key所在的位置,否则提示没有找到信息。
。
实验主要步骤:
1.建立的初始查找表可以是无序的,如测试的数据为{3,7,11,15,17,21,35,42,50}或者{11,21,7,3,15,50,42,35,17}。
2.给出算法的递归和非递归代码;
3.如何利用二分查找算法在一个有序表中插入一个元素x,并保持表的有序性?
程序代码
实验结果:
心得体会:
实验7
实验题目:
排序
实验目的:
掌握各种排序方法的基本思想、排序过程、算法实现,能进行时间和空间性能的分析,根据实际问题的特点和要求选择合适的排序方法。
实验要求:
实现直接排序、冒泡、直接选择、快速、堆、归并排序算法。
比较各种算法的运行速度。
实验主要步骤:
程序代码
实验结果:
心得体会: