1、structsnoDe*left;/指向配偶结点structsnoDe*right;/指向兄弟或子女结点FnoDe;(二)总体设计实验由主函数、家谱建立函数、家谱输出函数、儿子查找函数、祖先查找函数、结点定位函数、选择界面函数七个函数共同组成。其功能描述如下:(1)主函数:统筹调用各个函数以实现相应功能voidmain()(2)家谱建立函数:与用户交互建立家族成员对应关系voidInitialFamily(FnoDe*/人名/*家谱建立函数*/voidInitialFamily(FnoDe*inttag;q=(FnoDe*)malloc(sizeof(FnoDe);q=nuLL;s=(FnoD
2、e*)malloc(sizeof(FnoDe);printf(输入姓名:n);scanf(%s,,s-name);s-left=s-right=nuLL;head=r=s;%s是否有配偶?有1,无0n,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-
3、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;elseq=findnode(b-left,p);/否则递归调用其左结点if(q!returnq;elsereturn(fin
4、dnode(b-right,p);/递归调用右结点篇二:肇庆学院计算机学院/软件学院实验报告专业_软件工程_班级14软件2班姓名_黎福喜_学号20XX24133225课程名称数据结构学年20XX20XX学期1?/2课程类别专业必修?限选任选实践评分:批阅老师:20XX年月日实验1线性表的基本操作?实验目的1、掌握线性表的基本一算。2、掌握顺序存储的概念,学会对顺序存储数据结构进行操作。3、加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力。实验内容1、编写线性表举报操作函数(1)InitList(LIsT*L,intms)初始化线性表;(2)InsertList(LIsT*L,int
5、item,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、程序运行主要结果
6、截图2、程序源代码#include#include#includestructLinearListint*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-max
7、size)return-1;if(rcL-size)rc=L-size;for(i=L-size-1;i=rc;i-)L-listi+1=L-listi;listrc=item;size+;return0;voidoutputList(LIsT*L)/输出inti;for(i=0;isize;i+)printf(,L-listi);printf(intDeleteList1(LIsT*L,intitem)/删除元素值的线性表记录inti,n;i+)if(item=L-listi)break;if(isize)for(n=i;nsize-1;n+)L-listn=L-listn+1;size-;
8、returni;return-1;intDeleteList2(LIsT*L,intrc)/删除指定位置的线性表记录intn;if(rc=L-size)return-1;for(n=rc;intFindList(LIsT*L,intitem)/查找inti;listi)returni;return-1;intmain()LIsTLL;inti,r,choice;listaddr=%ptsize=%dtmaxsize=%dn,LL.list,LL.size,LL.maxsize);InitList(printf(doprintf(-n-1.添加元素-n-2.按元素值查找元素-n-3.按元素值删除
9、元素-n-4.按位置删除元素-n-0.退出-n请输入数字(04)选择你要进行的操作: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、加深对链式
10、存储数据结构的理解,逐步培养解决实际问题的编程能力。?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日指导教师及职称:实验成绩:开课时间:20XX20XX学年第二学期实验管理中心印制
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1