《2023年数据结构与算法实验报告.docx》由会员分享,可在线阅读,更多相关《2023年数据结构与算法实验报告.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据结构实验报告题目: 线性表 班级:网络工程1401班 学号:指导教师:高峰 日期:2023/ 716BitTree BT;BT= (Bit Node*)ma 1 lo c (sizeo f (Bi t N o de);BT=NULL;re t urn BT;)Bit Tr e e B i t Tr e eCreat (B i tTree &BT) int ch:printf (请输入节点的内容,输入0时结束建立! n);sc a n f (0 %d , &ch);if (ch=0)BT=NU LL;else (BT = (Bit Tree) m a llo c (si z e o f (B
2、 i t N o d e ); BT- d ata=ch;B i tTreeC rea t (BT-1 child);B i t T r e eCreat (BT- r child);)r e tu r n BT ;vo i d BitTreeEmpty (Bi tTree BT) if(BT=NULL)P rintf(树为空! n);el s eprintfC5!nO; void PreOrd e rT r a vers e (B i tTree BT) if(BT!=NULL) printf(树结点的内容为*dn”,BT-data );PreOrdc r Travers e (BT 1 c
3、 h il d );P r eOrderT r aver se(BT-rchild);)v oid InOrderTrave r s e (B i tTree BT) i f (BT!=NULL) I n 0 r d er T r averse ( BT-lchild);P rintf (树结点的内容为:d n BT-data);InOrderT r a verse (BT-rchild);)void PostOrdcrTr a ve r s e (Bit T r e e BT) i f (BT! = NULL) Po s tOrderTraverse(BT- 1 chi 1 d );Po s
4、 t 0 r derTravers e (B T-lc h i 1 d);printf (树结点的内容为:dn,BT-data );)int co u n t (BitTr e e BT) i f (BT=NULL)retu r n 0;elseretur n (coun t (BT1 c h ild)+ c oun t ( BT- r child) +1);i n t B i nTr e eDe p th(BitTre e BT) i n t i=l, j= 1 ;if(BT=NU LL)return 0;e 1 se(i=B i n T r eeDept h (BT-lchi 1 d);j
5、=B i n T r e e Depth ( B T-rc h i 1 d);i f (ij)return(i+l);elseretu r n ( j +1);)void B i nTre e C 1 ear (BitTr e e &BT) if(BT) i f (BT-lchi 1 d)B i nT reeClear(BT- 1 child);if (BT-r child)BinT reeC 1 ear (BT- r chi Id);f ree (BT);BT=NILL;)mainO Bi t Tr e e BT ;whil e (i! =0) pri n tf ( -区欠 n );pr i
6、 nlf (请选择要进行的操作 n );pr intf (l.初始化一棵树2.建立一棵树3.判断树是否为空 n);printf (4 .按前序遍历树5 .按中序遍历树6.按后序遍历树 n );prin t f( 7.求树的深度8 .求树的结点数9.把树清空n);。万1】4(0.退出操作界面);printf (谢谢使用 n );sea n f ( % d &j);swi t c h( j ) c a se 1 :BT=BitTreel n it () ;pri n t f (树已经初始化! n ) ;bre a k;case 2:Bit Tre e C reat ( B T) ;brea k ;
7、case 3:Bit T reeEmp t y ( B T) ; b r e a k ;case 4: Pre0 rderTra v er s e(BT);br e ak;cas e 5 : InO r derTra v e rse (BT) ; b reak;ca s e 6: Post 0rd e r Tra v e r se (BT);bre a k ;case 7 : 1= B i n TreeD e pth (B T ); pr i n t f (“树的深度为:% d n ”,1) ; bre a k;case 8 l=count ( B T) ;pr i ntf (“树的结点数为:
8、% d n, 1 ) ;bre a k ;c a s e 9:BinT r eeCl e ar(BT) ; printf (“树已经清空! n ) ; b rea k ; case 0 : e x it (0);环节:1 .选择进行的操作.初始化、建立、判断树是否空、先/中/后序遍历、求深度/结点,清空树2 .显示结果四:实验结果及分析: C:UsersdellDesktopJu155demoDebug$.exe,欢迎使用请选鞍进行的操作1,瞬化-醐2建立一喇3州幅为空&着前序遍历树5按巾序撕树6.按后序遍历树7.蝴的深度8,蝴除点数9,把端空Q点出麻界面蒯使用2请输入节点的内容,输入0时结束
9、建立!342568964请输入节点的内容,输入耐结束建立!欢迎使用请选鞍进行的操作1,瞬化-醐2建立一喇3州幅为空&着前序遍历树5按巾序撕树6.按后序遍历树7.蝴的深度8,蝴除点数9,把端空Q点出麻界面蒯使用2请输入节点的内容,输入0时结束建立!342568964请输入节点的内容,输入耐结束建立!欢迎使用请选择要进行的操作1.初始化一棵树2.建立一棵树3.判断树是否为空4.按前序遍历树5.按中序遍历树6.按后序遍历树7.求树的深度8.求树的结点数9.把树清空0.退出操作界面谢谢使用才结点的内容为:3 寸结点的内容为:4 寸结点的内容为:2 寸结点的内容为:5 寸结点的内容为:6 寸结点的内容为
10、:8 寸结点的内容为:9 I结点的内容为:6 寸结点的内容为:4/AJiElxrtJ 请选择要进行的操作L初始化一棵树2.建立一棵树3.判断树是否为空 4.按前序遍历树5.按中序遍历树6.按后序遍历树 7.求树的深度8.求树的结点数9.把树清空 0.退出操作界面谢谢使用Q树的结点数为:9欢迎使用 请选择要进行的操作1.初始化一棵树2.建立一棵树3.判断树是否为空 4.按前序遍历树5.按中序遍历树6.按后序遍历树 7.求树的深度 8.求树的结点数9.把树清空 0.退出操作界面谢谢使用 7树的深度为:9分析:本程序不仅可以记录一棵二叉树中每种类型节点数(度为0/1/2的节点数)。同时让他有以下功能
11、:1.初始化一棵树。2.建立一棵树。3.判断树是否为空。4. 分别按先/中/后序遍历树。5.求树的深度。6.求树的结点数。7 .清空树。实验一:线性表一:实验规定掌握数据结构中线性表的基本概念。纯熟掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及 合并并运算在顺序存储结构撒谎可以的实验。纯熟掌握链表的各种操作和应用。二.实验内容1 .编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。2 .编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。三:实验过程及环节源代码:# includ e i n cludedefine L I ST_IN I T_SIZE 1
12、 00# fi n e LISTINCREMENT 10t y p cdef str u c t i n t * el e m;i n t 1 e n gt h ;int 1 i s tsiz e ;Sq L i st:/ /S q Lis t sq;v oid I ni t L ist_Sq (SqList *sq) / / 初始化列表(sq-e 1 em=(i n t *)m a 1 1 o c(LIST_I N I T_S IZE* siz e of (int);sq-lcn g th=O;sq- lists ize=LIST_INIT_SIZE;P rintf C申请空间成功!n);)
13、v o id GetE 1 em( S qLi s t *sq, int i)/获取第 i 位置元素的值(int * p ;p=& (sq-elemi- 1 );p rintf C%r,*p);pr i nt f ( n);int Li s tlnsert_Sq ( S qLi s t *sq, int i, int a)在 i 位置之前插入 a(int *p,*q;i f (isq leng t h+ 1 )(p r int f (*位置不合法! n );ret u rn 0;if (sq- 1 on g t h =s q - 1 istsiz e )(int * ne w base=(in
14、 t * )r e alloc (sqelem, (sq 1 ists i ze+L I STINCR EMENT) *siz e of (int);i f (1 new b as e )(printf (申请空间溢出n);r etu r n 0 ;)sq- e lem=newb a s e;sq-lists i zc+=L I STINCREMENT;p=& (sq- e 1 em i -1) ; / p指向第i位置的元素q=&(sq-elem sq-lengt h - 1 );/ / q 指向最后一个元素fo r (;q=p; q) *(q+ 1 ) =*q;*p=a ;+sq1 e n
15、gth;ret urn 1;int Lis t Del e t e _ S q (SqLis t *s q , i nt i ) 删除 i 位置上的值 (int *p, *q;if ( i s q - 1 ength) return 0 ;P=&(s q elemi-l) ;/p指向第i位置的元素q =sqe 1 em+sq- 1 engt h l;/q 指向最后一个元素f o r (+ p ;pl e n gth;return 1;v o id visit ( S qList *sq) / / 输出数据i nt i=l;for ( ; ilength; i+ + )(i nt *p;p=&
16、s q-ele mi-l;printf (*%d , * p );printf();voi d m a in ()(int i =1, a=0, bo o =1, numbor=0;SqL i st s, *sq;s q=& s ;InitL i s t_Sq (sq);printf (初始化空表n);printfC输入数据个数:n );s c an f ( , &num b er);p r intf (输入%1个数据:,numbc r );p r i ntf n);f o r(; i=numbcr; i+)(scanf&a);i f (b o o=Lis t I ns e r t _Sq (
17、sq, i, a)pr i n t f(插入成功! n);else(pri n tf C插入不成功,重新插入-! n );i = i-l;)P rintf (输出所有元素n);v isi t (sq);p r intf ( n );P r intf (输出删除的位置:);scanf&a);i f ( b oo=L i s t De 1 e t e_Sq(sq, a)(pr i nt f (数据删除成功!n );el s e(printf (没有删除成功n);)P r i n t f (输出所有元素:n);visit (sq);p r i n If ;printf(输出要显示数据的位置:);sc
18、anf( /d, &a);printf (输出 d位置数值n , a );i f (a s q-le n gt h )P rintfC-输出位置的数据不存在 nH );)e Ise(G e t E 1 em(sq, a);)环节:1 .初始化空表.顺序插入数据后输出所有元素2 .选择删除位置,删除数据后输出所有元素.选择查看的数据位置,输出选择杳看的数据四:实验结果及分析J tor方d .1 rC。, icTo0 fJ fg Ayc4 omo。bciaocb ox。甲i=SZTQ.I威力I切匕仝差向的一人乙4、芸攵掂= 12 3 4J击入欣加!入 J755插,入刀文专前.人-安攵际1、线,3前
19、山用i后7 N * 4忤前土花芸白勺位WE : 2物际叩好成功!3前田坊者亲:杵命 山在显.7 .5攵,居门勺心ZH. 4分析:木程序在实现顺序存储插入以及删除i个元素开始的k个元素删除(数据类型为 整型)。之外在删除、杳看是实时输出结果,并且可以查看希望显示数据的位置。数据结构实验报告题目:树班级:网络工程14 01班学号:指导教师:高峰日期: 2023/7/ 6实验二:树-:实验规定掌握二叉树,二叉树排序数的概念和存储方法。掌握二叉树的遍历算法。纯熟掌握编写实现树的各种运算的算法。二.实验内容记录一棵二叉树中每种类型节点数(度为0/1/2的节点数)。三:实验过程及环节#i n c 1 ud e #include# included s t dl i b. htypcde f stru c t Bi t N o d e int da t a;struct BitN o d e * 1 child, *rchild ; BitNode, *B i t T re e ;B i t Tree BitTre e I n it()