算法与数据结构实验

上传人:z**** 文档编号:93589542 上传时间:2022-05-20 格式:DOC 页数:50 大小:238.50KB
收藏 版权申诉 举报 下载
算法与数据结构实验_第1页
第1页 / 共50页
算法与数据结构实验_第2页
第2页 / 共50页
算法与数据结构实验_第3页
第3页 / 共50页
资源描述:

《算法与数据结构实验》由会员分享,可在线阅读,更多相关《算法与数据结构实验(50页珍藏版)》请在装配图网上搜索。

1、盒陂科扶亭院学生实验报告册(理工类)课程名称:算法与数据结构专业班级学生学号:学生:所属院部:计算机工程学院 指导教师:章海鸥2016 2017学年第/ 学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需 打印的,要遵照以下字体、字号、间距等的具体要求。纸一律采用 A4的纸。实验报告书写说明实验报告中一至四项容为必填项, 包括实验目的和要求;实验仪 器和设备;实验容与过程;实验结果与分析。各院部可根据学科特点 和实验具体要求增加项目。填写注意事项(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。(3)尽量采用专用术语来说明事物。(4)

2、外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现, 以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验 报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报 告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课 程的实验大纲。实验项目名称:顺序表实验学时:2同组学生:/实验地点: 实验日期: 实验成绩: 批改教师:批改时间:实验1顺序表一、实验目的和要求掌握顺序表的定位、插入、删除等操作。二、实验仪器和设备VC6.0

3、三、实验容与过程(含程序清单及流程图)1、必做题(1)编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。 编写主函数测试结果。(2) 编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素X。 如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号 从0开始编号);如果不存在,返回-1。编写主函数测试结果。(3)在递增有序的顺序表中插入一个新结点 X,保持顺序表的有序性。解题思路:首先查找插入的位置,再移位,最后进行插入操作;从第 一个元素开始找到第一个大于该新结点值 x的元素位置i即为插入位 置;然后将从表尾开始依次将元素后移一个位置直至元素i ;最后将新结点x插入到i位置

4、。(4)删除顺序表中所有等于X的数据元素。2、选做题(5)已知两个顺序表A和B按元素值递增有序排列,要求写一算法实现将 A和B归并成一个按元素值递减有序排列的顺序表(允许表中含有值 相同的元素)。程序清单:(1)#in elude #defi ne maxsize 20 typedef int datatype; typedef structdatatype datamaxsize;int last;seque nlist;void CreateList(seque nlist *L,i nt n)int i;pr in tf(please in put n nu mbersn);for(i=

5、0;idatai);(*L).last 二n;void Prin tList(seque nlist *L,i nt n)int i;prin tf(the seque nlist isn);for(i=0;idatai);main ()int i,x;int n=10;seque nlist L;CreateList(&L, n);Prin tList(&L,n);getchar();#in cludetypedef int datatype;#defi ne maxsize 1024typedef structdatatype datamaxsize;int last;seque nlis

6、t;int fun( seque nlist L,i nt x,i nt n)int i;for(i=0;i n ;i+)if(L.datai=x)return i;retur n -1;void mai n()seque nlist L;int i,n,y;int x;prin tf(请输入元素的个数:);sca nf(%d,&n);for(i=0;i n ;i+)sca nf(%d,&L.datai);prin tf(n请输入要查找的数据元素:);sca nf(%d,& x);y = fun(L,x,n);if (y=1)printf(n所要查找的数据元素不存在n);elseprintf(

7、n数据元素d所在的位置为dn,x,y);#in elude #defi ne maxsize 100 typedef structint datamaxsize;int last;seque nlist;main ()int i,x,j;seque nlist I二1,2,4,5,6,7,8,6;printf(n插入元素前的数据为:”);for(i=0;iv=l.last;i+)prin tf(%2d,l.datai);printf(n请输入要插入的元素:”);sca nf(%d,& x);for(i=1;ix) break;if(il.last )l.data l.last +1=x;els

8、efor(j=l.last;j=i-1;j-)l.dataj+1=l.dataj;l.datai-1=x;l.last+;printf( 插入元素后的数据为:n);for(j=0;j=l.last;j+)prin tf(%3d,l.dataj);prin tf(n);return 0;#in clude #defi ne maxsize 100typedef structint datamaxsize;int last;seque nlist;main ()int i,j,x=O,k=O;seque nlist L=1,3,5,7,2,4,6,8,2,9,9;printf(n原数据为:);fo

9、r(i=0;iv=L.last;i+) pri ntf(%3d,L.datai);printf(n请输入要删除的数据:);sca nf(%d,& x);for(i=1;i=Last+1;i+)if(L.datai-1=x)for(j=i;j=L.last+1;j+) L.dataj-1=L.dataj;L.last-;i-;k=1;if(k=1)printf(”删除后的数据为:n);for(j=0;jv=Last;j+)pri ntf(%3d,L.dataj);else prin tf(Not foun d!n); prin tf(n);i平牡沾訂覽i曲関蜒齐*四、实验结果与分析(程序运行结果

10、及其分析)F:曲ZygU泊毋二世毋黑一戏 盘心吐叫亠上血1.2漓丸劲所在的鈕为-I Iapeit hty ct c*nrlnut F:1S 13500 2 5 周江成曲验一2 - 2Debu gl- 3.exe isIK 3 素要素 帀A7? AWA1 i-i|E,BE为M-ss1.31.4-dz/*1y-I. F :口5二 2902。江卿醪_VL-4;De bunl -4xe ”LP居 m#- lia_nto continue五、实验体会(遇到问题及解决办法,编程后的心得体会)遇到问题:读取数据元素时,误将 =写成二,导致错误。实验过程中,顺序 表的赋值没有弄懂,以致输出多个 0或者少输出。

11、格式运算符也要正确控制, 否 则系统会停止工作。实验体会:通过实验掌握了顺序表的基本操作,如初始化、插入、读取元素、 删除等等。并了解到线性表顺序存储结构的特点,即逻辑关系上相邻的两个元素 在物理位置上也相邻,然而从另一方面来看,在做插入和删除时需要移动大量元 素。本次实验基本完成了实验要求的目的,顺序表的初始化,定义,插入,查找 等,更好的了解了顺序表基本操作的算法, 以及更直观的了解了数据结构在 C语 言环境下的体现。实验项目名称: 单链表实验学时:_J2同组学生:/实验地点: 实验日期: 实验成绩: 批改教师:批改时间:实验2单链表一、实验目的和要求1、实验目的掌握单链表的定位、插入、删

12、除等操作。2、实验要求(1)注意链表的空间是动态分配的,某结点不用之后要及时进行物理删除, 以便释放其存空间。(2)链表不能实现直接定位,一定注意指针的保存,防止丢失。二、实验仪器和设备Visual C+6.0三、实验容与过程(含程序清单及流程图)1、必做题(1)编写程序建立一个单链表,并逐个输出单链表中所有数据元素。(2) 在递增有序的单链表中插入一个新结点x,保持单链表的有序性。解题思路:首先查找插入的位置然后进行插入操作;从第一个结点开 始找到第一个大于该新结点值的结点即为插入位置;然后在找到的此 结点之前插入新结点;注意保留插入位置之前结点的指针才能完成插 入操作。(3) 编写实现带头

13、结点单链表就地逆置的子函数,并编写主函数测试结果。2、选做题已知指针LA和LB分别指向两个无头结点单链表的首元结点。要求编一算法 实现,从表LA中删除自第i个元素起共len个元素后,将它们插入到表LB 中第j个元素之前。程序清单:(1)#i nclude#in cludetypedef struct no deint data;struct node *n ext;*Li nklist,Node;Lin klist creat(i nt n)Lin klist head,r,p;int x,i;head=(Node*)malloc(sizeof(Node); r=head;printf(输入数

14、字:n);for(i=n;iO;i-)sca nf(%d, &x); p=(Node*)malloc(sizeof(Node); p-data=x;r-n ext=p; r=p;r-n ext=NULL;retur n head;void output(L in klist head)Lin klist p;p=head-n ext;doprin tf(%3d,p-data);p=p-n ext;while(p);prin tf(n);void main()Lin klist head;int x, n;printf(输入数字的个数(n):n);sca nf(%d,&n);head=creat

15、 (n);printf(输出数字:n); output(head);(2)#include #include typedef struct nodeint data;struct node *n ext;lin klist;mai n()int x,y;lin klist *h,*s,*r,*p,*q,*m,* n; h=malloc(sizeof(li nklist); r=h;printf(请输入一个数组:);sca nf(%d, &x);while(x!=0)s=malloc(sizeof(li nklist); s-data=x;r-n ext=s;r=s;scan f(%d, &x)

16、;r-n ext=NULL;printf( 请输入插入值:); sca nf(%d, &y);p=h-n ext;while(p!=NULL)if (p-data)n ext;else break;q=malloc(sizeof(li nklist); q-data=y;m=h;while(m-n ext!=p)m=m-n ext;q-n ext=p;m-n ext=q;n=h-n ext;printf(这个链表是:);while( n!=NULL)prin tf(%2d, n-data);n=n-n ext;(3)#i nclude #include typedef struct nodei

17、nt data;struct node *n ext;lin klist;mai n()int x;lin klist *h,*s,*r,*p,*q,*t; h=malloc(sizeof(li nklist); r=h;printf(请输入一个数组:);sca nf(%d, &x);while(x!=-1)s=malloc(sizeof(li nklist); s-data=x;r-n ext=s;r=s;scan f(%d, &x);r-n ext=NULL;printf(n这个链表是:n);p=h-n ext;while(p!=NULL)prin tf(%2d,p-data);p=p-n

18、 ext;p=h-n ext;q=p-n ext;while(q!=NULL)t=q-n ext;q-n ext=p;p=q;q=t;h- next- n ext=NULL;h-n ext=p;printf(n翻转转后的链表是:n);p=h-n ext;while(p!=NULL)prin tf(%2d,p-data);p=p-n ext;四、实验结果与分析(程序运行结果及其分析)F:l 5139020351 江戌实验二 BubugWl 汨D20 巧俞入数字的个数W渝入数字;前岀数字,123(1)5ressItey to coni in lie E:Debug01513902035Idt2-2

19、.e:1 2 3 4 5 B这彳卡连表是:12 3 4 5 SPress any key to continue| F:15139O2O3 5 周江JdtXDebugVOlSlSSDZa 5zjc 2-3.exe虺个斑表是乂12 3 4 5博转转后的错表杲:5 4 3 2 1Press nny key to contInue五、实验体会(遇到问题及解决办法,编程后的心得体会)遇到问题:编写成功后运行时,没有加入 $导致程序运行不成功,不能够退 出。后注意到这个问题才继续运行下去。实验体会:在编写程序时,设置了结束字符一定要牢牢记住,并且在输入时 观察仔细类型是什么,以及是否是输入一串有顺序的数

20、字,编写成功不难,但是 要规格式,不能仅仅以完成程序为目的。 而完成这一章的实验也让我了解了, 顺 序表便于查找不便于插入删除,而链表恰恰相反,链表的插入删除只需要移动指 针,而顺序表要从后往前依次移动,二者各有优劣 实验项目名称:堆栈和队列实验学时: 2同组学生:/实验地点: 实验日期: 实验成绩: 批改教师:批改时间:实验3堆栈和队列一、实验目的和要求(1掌握应用栈解决问题的方法。(2掌握利用栈进行表达式求和的算法。(3)掌握队列的存储结构及基本操作实现,并能在相应的应用问题中正确选 用它们。二、实验仪器和设备Visual C+6.0三、实验容与过程(含程序清单及流程图)1、必做题(1)判

21、断一个算术表达式中开括号和闭括号是否配对。(2)测试“汉诺塔”问题。(3)假设称正读和反读都相同的字符序列为”回文”,试写一个算法判别 读入的一个以为结束符的字符序列是否是“回文”。2、选做题在顺序存储结构上实现输出受限的双端循环队列的入列和出列算法。设每个 元素表示一个待处理的作业,元素值表示作业的预计时间。入队列采取简化 的短作业优先原则,若一个新提交的作业的预计执行时间小于队头和队尾作 业的平均时间,贝朋入在队头,否则插入在队尾。程序清单:(1)#i nclude #include typedef char datatype;#defi ne maxsize 64typedef stru

22、ctdatatype datamaxsize;int top;seqstack;int match(char exp,i nt n)/设置一个栈,用来存放扫char stmaxsize;描表达式中的括号int top=-1,i=0,tag=1;while(i=0) tag=0; /若栈不空,则不配对return tag;mai n()int tag,i;char exp7=+,(,2,-,4,);printf(请输入一个算式表达式:n);for(i=0;i7;i+)expi=getchar();tag=match(exp,7);if(tag)printf(算式表达式中的开括号和闭括号配对。);

23、elseprintf(算式表达式中的开括号和闭括号不配对!);#include void move(char x,char z)pri ntf(%c-,x);prin tf(%cn,z);void Hanoi(int n, char x, char y,char z)if(n=1)move(x,z);elseHa noi( n-1,x,z,y);move(x,z);Han oi( n-1,y,x,z);mai n()int m;printf(请你输入A上面的碟子总数);sea nf(%d,&m);Han oi(m,A,B,C);getchar();getchar();#i nclude#def

24、i ne N 100typedef structchar dataN;int top;seqstack;mai n()char strN;int i=0, n;seqstack a;a.top=0;gets(str);while(stri!=”)i+;n=i;for(i=0;i n/2;i+)a.top+;a.dataa.top=stri;i=i-1;if(n %2=0)i+;elsei=i+2;while(i n & a.dataa.top=stri)i+;a.top-;if(i=n)printf(是回文数组n);elseprintf(不是回文数组n);四、实验结果与分析(程序运行结果及其分

25、析)I : |1513902035151513902035091&135O2O35zjc3-l.exe-请输入二个算式表迂式:1+25=3算式表达式中的开括号和间括号配对 Press any Fscy tc cor)tinMcgj T:15159O2O35周江成1 口旳OZO药可谍验三D由LigWd站020巧匸实验3占日厢123321G區回文数组Ppess arij key ta continue五、实验体会(遇到问题及解决办法,编程后的心得体会)遇到问题:在本章栈和队列中编程,有许多的 if语句,编写时一不小心就 会少加一个花括号,以致编写不成功。 在本章汉诺塔问题中,使用了栈以及函数 的递

26、归,这其中的过程一直不是很了解,在经过老师的讲解后,理解了大致过程。实验体会:递归函数是编程中经常会用到的一种函数,它可以实现许多我们 在平时言语和解释上解决不了的问题, 我们需要理解并且可以熟练的使用它, 这 对我们之后的编程会有很大的帮助。而汉诺塔利用栈是一种很经典的递归的算 法,这让我们理解栈和递归。实验项目名称: 串实验学时:_J2同组学生:/实验地点: 实验日期: 实验成绩: 批改教师:批改时间:实验4串一、实验目的和要求掌握串的存储及应用二、实验仪器和设备Visual C+6.0三、实验容与过程(含程序清单及流程图)1、必做题(1)编写输出字符串s中值等于字符ch的第一个字符的函数

27、,并用主函数 测试结果。(2)编写输出字符串s中值等于字符ch的所有字符的函数,并用主函数测 试结果。解题思路:可以将第一题程序改进成一个子函数,在本题中循环调用。(3) 设字符串采用单字符的链式存储结构,编程删除串s从位置i开始长 度为k的子串。2、选做题假设以链结构表示串,编写算法实现将串 S插入到串T中某个字符之后,若 串T中不存在这个字符,则将串S联接在串T的末尾。提示:为提高程序的通用性,插入位置字符应设计为从键盘输入。程序清单:#i nclude void search(char *s,char ch)int i=0,n=0;while (*(s+i)if(*(s+i)=ch)pr

28、intf(第一个字符:s%d=%cn,i,ch);n+;break;i+;if(!n)prin tf(No Fou nd!n);void main()char s20,ch;printf(请输入一个串:);gets(s);printf(请输入要找的元素:);sca nf(%c,&ch);search(s,ch);#include void search(char *s,char ch)int i=0,n=0;while (*(s+i)if(*(s+i)=ch)n+;%dn, n,ch,i);printf(第(个c在串中的下标为:i+;if(!n)prin tf(No Fou nd!n);voi

29、d main()char s20,ch;prin tf(请输入串元素:);gets(s);prin tf(请输入要找的元素:);sca nf(%c,&ch);search(s,ch);#i nclude#in cludetypedef struct linknodechar data;struct linknode *n ext;li nkstri ng;lin kstri ng *CREAT()linkstring *head = NULL,*p = NULL,*s = NULL;int a;n);printf(请输入顺序表的值,-1表示输入结束:sca nf (%d,&a);while (

30、a!=-1)s= (li nkstri ng *)malloc(sizeof(li nkstri ng); if (s = NULL)exit(0);s-data = a;if(head = NULL)head = s;elsep-n ext = s;p=s;scanf (%d,&a);p-next = NULL;printf(建立完毕! n);retur n head;int SEARCH(linkstring *s,int i, int k)lin kstri ng *p =s;int j= 0;for(;jvi+k-2&p- next!=NULL;j+)p = p-n ext;if(j=

31、i+k-2)return 1;return 0;void DELETE(li nkstri ng *s,i nt i,i nt k)linkstring *p = s,*q = NULL; int j=1;for(;jvi-1;j+)p=p-n ext;for(j=0;jn ext;p-n ext = q-n ext; free(q);prin tf(成功删除!);void PRINT(li nkstri ng *head)linkstring *s = NULL;s = head;while (s)prin tf(%d ,s-data); s= s-n ext;printf(打印完毕! nn

32、);int mai n()lin kstri ng *ls;int i,k,m;Is = CREAT0;PRINT(ls);printf(输入你想删除第几个字符起的连续的多少个字符:);scanf (%d%d,&i,&k);m = SEARCH(ls,i,k);if(m=0)printf(不存在这样的子串,删除失败!);elseDELETE(ls,i,k);PRINT(ls);return 0;四、实验结果与分析(程序运行结果及其分析)(1)巨匚2JC2JC 素;303 卞标为;百 to continuieanS -兀 的口 口 口-Sts 孚要在在在 青青琴幕幕千:壮聋的0药沾周江就1515

33、笳20沾硏寻:二门丘扎耶,巧上兀2。巧灰4-2心卍请输入顺序表的值,表示输入结束:1 2 3 4 5 6 -I建立完毕!亠宀片12 3 4 5 6打印完毕!鯉你想删除第几个字符起的匹塚的多少个宇符;2 去功删除! 1 2 3 6打印完毕IPi*e2s *ny key to cont inue五、实验体会(遇到问题及解决办法,编程后的心得体会)实验体会:本章第一题可以作为第二题的子函数,使用调用;也可以从开头 查找对应的字符到结尾,最后全部输出。前两题使用顺序串,后面一题是链串。 串的存储结构包含有顺序存储结构和链式存储结构。在串的顺序存储结构中,表示串的长度通常有两种方法:一种方法是设置一个串

34、的长度参数, 其优点在于便 于在算法中用长度参数控制循环过程;另一种方法是在串值得末尾添加结束标 记,此种方法的优点在于便于系统自动实现。 在串的存储过程中,串值用双引号 引起来,系统将自动在串值得末尾添加结束标记 0字符。实验项目名称:二叉树实验学时:2同组学生:/实验地点: 实验日期: 实验成绩: 批改教师:批改时间:实验5二叉树一、实验目的和要求(1掌握二叉树的生成,以及前、中、后序遍历算法。(2)掌握应用二叉树递归遍历思想解决问题的方法。二、实验仪器和设备Visual C+6.0三、实验容与过程(含程序清单及流程图)1、必做题(1)建立一棵二叉树。对此树进行前序遍历、中序遍历及后序遍历

35、,输出 遍历序列。(2)在第一题基础上,求二叉树中叶结点的个数。(3)在第一题基础上,求二叉树中结点总数。(4)在第一题基础上,求二叉树的深度。2、选做题已知一棵完全二叉树存于顺序表 sa中,sa.elem1sa.last存储结点的值。 试编写算法由此顺序存储结构建立该二叉树的二叉链表。解题思路:根据完全二叉树顺序存储的性质来确定二叉树的父子关系即“还 原”了二叉树,之后再按照二叉树二叉链表的构造方法进行建立。完全二叉 树顺序存储的一个重要性质为,第i个结点的左孩子是编号为2i的结点, 第i个结点的右孩子是编号为2i+1的结点。程序清单:(1)#include #include #defi n

36、e maxsize 20typedef struct no dechar data;struct node *lchild,*rchild;bitree;bitree *Qmaxsize;bitree *Creatree()char ch;int fron t,rear;bitree *root,*s;root=NULL;fro nt=1;rear=0;printf(NowCreat the bitree,input baseing the order top to bottom,leftto right:n);ch=getchar();while(ch!=#)s=NULL;if(ch!=)s

37、=malloc(sizeof(bitree);s-data=ch;s-lchild=NULL;s-rchild=NULL;rear+;Qrear=s;if(rear=1) root=s;elseif(s & Qfront)if(rear%2=0) Qfro nt-lchild=s;elseQfro nt-rchild=s;if(rear%2=1) fron t+;ch=getchar();return root;void preorder(t)bitree *t;if(t) prin tf(%c,t-data); preorder(t-lchild); preorder(t-rchild);v

38、oid ino rder(t)bitree *t;if(t)ino rder(t-lchild);prin tf(%c,t-data); ino rder(t-rchild);void postorder(t)bitree *t;if(t)postorder(t-lchild); postorder(t-rchild); prin tf(%c,t-data);mai n()bitree *root;root=Creatree();prin tf(preorder is:);preorder(root);prin tf(n);prin tf(i norder is:);i no rder(roo

39、t);prin tf(n);prin tf(postorder is:);postorder(root);prin tf(n);#i nclude#in clude#defi ne maxsize 100typedef struct no dechar data;struct node *lchild,*rchild;bitree;bitree *Qmaxsize;bitree *Creatree()char ch;int fron t,rear;bitree *root,*s;root=NULL;fro nt=1;rear=0;printf(NowCreat the bitree,input

40、baseing the order top to bottom,leftto right:n);ch=getchar();while(ch!=#)s=NULL;if(ch!=)s=malloc(sizeof(bitree);s-data=ch;s-lchild=NULL;s-rchild=NULL;rear+;Qrear=s;if(rear=1) root=s;elseif(s & Qfront)if(rear%2=0) Qfront-lchild=s;elseQfro nt-rchild=s;if(rear%2=1) fron t+;ch=getchar();return root;int

41、left(bitree *t)int nu m1, nu m2;if(t=NULL) retur n 0;else if(t-lchild=NULL & t-rchild=NULL) return 1;elsenum仁 left(t-lchild);nu m2=left(t-rchild);return( nu m1+ nu m2);mai n()bitree *root;root=Creatree();prin tf(lefts is %dn,left(root);#i nclude#in clude#defi ne maxsize 100typedef struct no dechar d

42、ata;struct node *lchild,*rchild;bitree;bitree *Qmaxsize;bitree *Creatree()char ch;int fron t,rear;bitree *root,*s;root=NULL;fro nt=1;rear=0;printf(Now Creat the bitree,inputbaseing the order top to bottom,leftto right:n);ch=getchar();while(ch!=#)s=NULL;if(ch=)s=malloc(sizeof(bitree);s-data=ch;s-lchi

43、ld=NULL;s-rchild=NULL;rear+;Qrear=s;if(rear=1) root=s;elseif(s & Qfront)if(rear%2=0) Qfront-lchild=s;elseQfro nt-rchild=s;if(rear%2=1) fron t+;ch=getchar();return root;int no des(bitree *t)int nu m1, nu m2;if(t=NULL) retur n 0;else if(t-lchild=NULL &t-rchild=NULL) return 1;elsenu m1= no des(t-lchild

44、);num2=no des(t-rchild);retur n (nu m1+ nu m2+1);mai n()bitree *root;root=Creatree();printf(no des is %dn,no des(root);#i nclude#in clude#defi ne maxsize 100typedef struct no dechar data;struct node *lchild,*rchild;bitree;bitree *Qmaxsize;bitree *Creatree()char ch;int fron t,rear;bitree *root,*s;roo

45、t=NULL;fro nt=1;rear=0;printf(Now Creat the bitree,input baseing the order top to bottom,leftto right:n);ch=getchar();while(ch!=#)s=NULL;if(ch!=)s=malloc(sizeof(bitree); s-data=ch;s-lchild=NULL;s-rchild=NULL;rear+;Qrear=s;if(rear=1) root=s;elseif(s & Qfront)if(rear%2=0) Qfront-lchild=s;elseQfro nt-r

46、child=s;if(rear%2=1) fron t+;ch=getchar();return root;int depth(bitree *t)int dep1,dep2;if(t=NULL) retur n 0;elsedep1=depth(t-lchild);dep2=depth(t-rchild);if(dep1dep2) return (dep1+1);else retur n( dep2+1);mai n()bitree *root;root=Creatree();printf(depth is %dn,depth(root);四、实验结果与分析(程序运行结果及其分析)1.F:1

47、513902035周江戍卩51甜020菇ZJ匚实監五9亡九切151站02茁5习匚5-:1,于No it Great the biti*ee, Input baseing the ot*der top to bottom, left t o pight pbPPctt pieoider Is = al)cinorder is:abcnostorder is:cbaPi*ess: an ke=y to continue2. F:15102035周江成门壮弭佗。沾实強壬2讯四订刃洱22充Nou C ire at t he biJtteer dnput base i_ngr the or-det to

48、p to bo tton, left; to rigflit:l&fts i? 1Ppess an卯 key to c ontInue3.F:15139O2Q35周江成151390203立J匚实验五2出阳1513902。町石由-3心护Nou Great the bitiee input baselnQ the ordei top to bottom, left to irigflit =nodes is 3ress an9 key to continue4.T:15132035JlfM5102035ZJCiiK.Debug-.1513902035zjc5-4.eKebNow Great the

49、 bitree,input basting the order top to botton,left Co riht:dept h is 3Press 救rty k业y to continue五、实验体会(遇到问题及解决办法,编程后的心得体会)遇到问题:这章从一开始编写成功后运行就一直不顺利,理论上程序时正确的,但是输入运行处的结果却总是错误一大堆。 在询问老师后,经过运行及测试, 才明白我是对ch=getchar();这个函数的理解错误,在这个函数中,空格也算作 一个字符,所以当我输入的时候,每一个字符中间空一个,输入五个对于程序我 相当于输入了十个字符。实验体会:这次的实验让我明白了基础理

50、论知识的重要性,没有坚实的基础知识,在这种问题上,即使编写出来了,检查错误调试就要花许多时间。并且我 也学会了二叉树的输入赋值以及它的各种计算。实验项目名称: 图实验学时:_J2同组学生:/实验地点: 实验日期: 实验成绩: 批改教师:批改时间:实验6图一、实验目的和要求(1熟练掌握图的基本概念、构造及其存储结构。(2熟练掌握对图的深度优先搜索遍历和广度优先搜索遍历的算法。二、实验仪器和设备Visual C+6.0三、实验容与过程(含程序清单及流程图)1、必做题(1构造一个无向图(用邻接矩阵表示存储结构)。(2)对上面所构造的无向图,进行深度优先遍历和广度优先遍历,输出遍历 序列。2、选做题采

51、用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否 存在一条长度为k的简单路径的算法。简单路径是指其顶点序列中不含有重 复顶点的路径。提示:两个顶点及 k值均作为参数给出。程序清单:(1)#i nclude #include typedef int datatype;#defi ne maxsize 1024#defi ne n 100typedef char VEXTYPE;typedef int ADJTYPE;typedef struct VEXTYPE vexs n;ADJTYPE arcsn n;int num ;GRAPH;void Graphl nit(GRAPH *L)L-num=0;int GraphVexs(GRAPH *L)return(L- nu m);void GraphCreate(GRAPH *L)int i,j;GraphI ni t(L);printf( 请输入顶点数目:n);sca nf(%d,&L- nu m);printf(请输入各顶点的信息:nfor(i=0;inu m;i+)fflush(stdi n);sca nf(%c,&L-vexsi);n);prin tf(请输入边权矩阵的信息:for(i=0;inu m;i+)for(j=0;jnu m;j+)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!