数据结构实验报告Word文件下载.docx
- 文档编号:17602096
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:5
- 大小:17.18KB
数据结构实验报告Word文件下载.docx
《数据结构实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告Word文件下载.docx(5页珍藏版)》请在冰豆网上搜索。
structsnoDe*left;
//指向配偶结点
structsnoDe*right;
//指向兄弟或子女结点
}FnoDe;
(二)总体设计
实验由主函数、家谱建立函数、家谱输出函数、儿子查找函数、祖先查找函数、结点定位函数、选择界面函数七个函数共同组成。
其功能描述如下:
(1)主函数:
统筹调用各个函数以实现相应功能
voidmain()
(2)家谱建立函数:
与用户交互建立家族成员对应关系
voidInitialFamily(FnoDe*//人名
/*家谱建立函数*/
voidInitialFamily(FnoDe*
inttag;
q=(FnoDe*)malloc(sizeof(FnoDe));
q=nuLL;
s=(FnoDe*)malloc(sizeof(FnoDe));
printf("
输入姓名:
\n"
);
scanf("
%s"
,,s->
name);
s->
left=s->
right=nuLL;
head=r=s;
%s是否有配偶?
有1,无0\n"
head->
//建立配偶结点scanf("
%d"
if(tag)
{
输入其配偶姓名:
s->
r->
left=s;
r=s;
do{//递归调用建立孩子结点printf("
%s是否还有子女?
InitialFamily(q);
right=q;
r=q;
}
}while(tag);
/*家谱输出部分*/
voidprintFamily(FnoDe*head)
FnoDe*s;
if(head!
=nuLL)
//不为空时输出当前结点
if(head->
left!
=nuLL)//输出配偶结点
s=head->
left;
和%s("
printFamily(s->
right);
//递归调用输出孩子结点
)"
right!
=nuLL)//递归调用输出兄弟结点
"
printFamily(head->
/*结点定位函数*/
FnoDe*findnode(FnoDe*b,charp[])//在家谱中定位所要查找结点{
FnoDe*q;
if(b==nuLL)
returnnuLL;
elseif(!
strcmp(b->
name,p))//如果与查找人名相同则返回该结点returnb;
else
q=findnode(b->
left,p);
//否则递归调用其左结点
if(q!
returnq;
elsereturn(findnode(b->
right,p));
//递归调用右结点
篇二:
肇庆学院计算机学院/软件学院
实验报告
专业_软件工程_班级14软件2班姓名_黎福喜_学号20XX24133225课程名称数据结构学年20XX—20XX学期1?
/2□课程类别专业必修?
限选□任选□实践□评分:
批阅老师:
20XX年月日实验1线性表的基本操作
?
实验目的
1、掌握线性表的基本一算。
2、掌握顺序存储的概念,学会对顺序存储数据结构进行操作。
3、加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力。
实验内容
1、编写线性表举报操作函数
(1)InitList(LIsT*L,intms)初始化线性表;
(2)InsertList(LIsT*L,intitem,intrc)向线性表指定位置插入元素;
(3)DeleteList1(LIsT*L,intitem)删除指定元素的线性表记录;
(4)DeleteList2(LIsT*L,intrc)删除删除指定位置的线性表记录;
(5)FindList(LIsT*L,intitem)查找线性表中的元素;
(6)outputList(LIsT*L)输出线性表元素。
2、调用上述函数实现下列操作:
(1)初始化线性表;
(2)调用插入函数建立一个线性表;
(3)在线性表中寻找指定的元素;
(4)在线性表中删除指定值的元素;
(5)在线性表中删除指定位置的元素;
(6)遍历并输出线性表。
实验结果
1、流程图
2、程序运行主要结果截图
2、程序源代码
#include#include#includestructLinearList{int*list;
intsize;
intmaxsize;
};
typedefstructLinearListLIsT;
voidInitList(LIsT*L,intms)//线性表初始化{if((L->
list=(int*)malloc(ms*sizeof(int)))==nuLL){printf("
内存申请错误!
exit
(1);
}L->
size=0;
L->
maxsize=ms;
}intInsertList(LIsT*L,intitem,intrc)//插入//item-记录值;
rc-插入位置{inti;
if(L->
size==L->
maxsize)
return-1;
if(rcL->
size)rc=L->
size;
for(i=L->
size-1;
i>
=rc;
i--)L->
list[i+1]=L->
list[i];
list[rc]=item;
size++;
return0;
}voidoutputList(LIsT*L)//输出{inti;
for(i=0;
isize;
i++)printf("
L->
list[i]);
printf("
}intDeleteList1(LIsT*L,intitem)//删除元素值的线性表记录{inti,n;
i++)if(item==L->
list[i])break;
if(isize){for(n=i;
nsize-1;
n++)L->
list[n]=L->
list[n+1];
size--;
returni;
}return-1;
}intDeleteList2(LIsT*L,intrc)//删除指定位置的线性表记录{intn;
if(rc=L->
size)return-1;
for(n=rc;
}intFindList(LIsT*L,intitem)//查找{inti;
list[i])returni;
return-1;
}intmain(){LIsTLL;
inti,r,choice;
listaddr=%p\tsize=%d\tmaxsize=%d\n"
LL.list,LL.size,LL.maxsize);
InitList(printf("
do{printf("
--------------------------\n"
------1.添加元素----------\n"
------2.按元素值查找元素--\n"
------3.按元素值删除元素--\n"
------4.按位置删除元素----\n"
------0.退出--------------\n"
请输入数字(0~4)选择你要进行的操作:
"
fflush(stdin);
scanf("
switch(choice){case1:
while
(1)//添加元素
{printf("
请输入元素值,输入0结束插入操作:
//清空标准输入缓冲区scanf("
if(i==0)break;
请输入插入位置:
InsertList(printf("
线性表为:
outputList(}break;
case2:
while
(1)//按元素值查找元素{printf("
请输入查找元素值,输入0结束查找操作:
r=FindList(if(r 实验2链表的基本操作
1、掌握链表的概念,学会对链表进行操作。
2、加深对链式存储数据结构的理解,逐步培养解决实际问题的编程能力。
?
1、编写链表几把操作函数:
(1)InitList(LIsT**p)初始化链表;
(2)InsertList1(LIsT**p,intitem,intrc)向链表的指定位置插入元素;
(3)InsertList2(LIsT**p,intitem)向有序链表插入元素;
(4)DeleteList(LIsT**p,intitem)删除指定元素值的链表记录;
(5)FindList(LIsT*p,intitem)查找链表中的元素;
(6)outputList(LIsT*p)输出链表元素。
(1)初始化链表;
(2)调用插入函数建立一个链表;
(3)在链表中寻找指定的元素;
(4)在链表中删除指定值的元素;
(5)遍历并输出链表。
篇三:
本科生实验报告
(五)
姓名:
学院:
专业:
班级:
实验课程名称:
数据结构实验
实验日期:
20XX年6月19日
指导教师及职称:
实验成绩:
开课时间:
20XX~20XX学年第二学期
实验管理中心印制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)