《2023年数据结构与算法实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年数据结构与算法实验报告.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据结构实验报告题目:线性表班级:网络工程14 0 1 班学号:_ _ _ _ _ _指导教师:高峰日期:2023/7/6实验一:线性表一:实验规定掌握数据结构中线性表的基本概念。纯熟掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构撒谎可以的实验。纯熟掌握链表的各种操作和应用。二.实验内容1 .编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。2 .编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。三:实验过程及环节源代码:#i n cl ud e#i n cl ude#de f i n e L I S T _ I N I T_ S
2、 I Z E 1 0 0#d e f i n e L I S TI N C R E M E N T 1 0t y p e de f str u c t i n t*e l e m;i n t 1 e n gt h ;i n t 1 i s tsi z e ;S q L i st;/S q L i s t sq;v o i d I n i t L i st_ S q (S q L i st*sq)/初始化列表Isq-e 1 e m=(i n t*)m a 1 1 o c(L I S T_ I N I T_ S I Z E*si z e o f (i n t);sq-l e n g th=O;sq
3、-l i s t s i ze=L I S T_ I N I T_ S!Z E;P ri n tf (-申请空间成功-!n);)v o i d G e tE 1 e m(S q L i s t*sq,i n t i)获取第 i 位置元素的值i n t*p ;p=&(sq-e l e m i-1 );p r i n t f*p );p r i n t f (n );)i n t L i s tl n se rt_ S q (S q L i s t*sq,i n t i,i n t a)在 i 位置之前插入 a(i n t*p,*q;i f (i sq l e n g t h+1 )Ip r i
4、n t f C-位置不合法!n );re t u rn 0;)i f (sq-1 e n g t h =s q -1 i stsi z e )(i n t*n e w b a se =(i n t*)r e a l l o c(s q e l e m,(s q 1 i sts i ze+L I S T I N C R EM E N T)*si z e o f(i n t);i f (!n e w b a s e )(p ri n tf (申请空间溢出 n);r e tu r n 0 ;)sq-e l e m=n e wb a s e;sq l i sts i ze+=L I S TI N C
5、R E M E N T;)p=&(sq-e 1 e m i -1 );p 指向第i 位置的元素q=&(sq-e l e m sq-l e n gt h -1 );/q 指向最后一个元素f o r(;q =p;q)*(q+1 )=*q;*p=a ;+sq 1 e n gth;r e t urn 1;)i n t L i s t D e l e t e _ S q (S q L i s t*s q ,i n t i )删除 i 位置上的值(i n t*p,*q;i f (i s q -1 e n gth)re turn 0 ;p=f c(s q e l e m i-l );/p 指向第i 位置的元
6、素q =sq e l e m+sq-l e n gt h 1;/q 指向最后一个元素f o r (+p ;p =q;+p)!*(p T)=*p ;)sq-l e n gth;re turn 1;v o i d vi si t(S q L i st*sq)/输出数据i n t i=l;for (;i l e n gth;i+)(i n t*p;p=&s q-e l e ;p ri n tf(,z%d M,*p);p ri n tf(n );)vo i d m a i n()(i n t i =1,a=0,b o o =1,n um b e r=0;S q L i st s,*sq;s q二&s;
7、I n i tL i s t_ S q (sq);p r i n t f(初始化空表n);p ri n tf (M输入数据个数:n );s c a n f (%d,&n um b e r);p r i n tf (“输 入%d 个数据:,n um b e r);p r i n tf (n );f o r(;i =n um b e r;i+)Isca n f (绘d,&a);i f (b o o=L i s t I n s e r t _ S q (sq,i,a)(p r i n t f (-插入成功!-n);)e l seIp ri n tf C-插入不成功,重新插入!n );i =i-l;)
8、p ri n tf (输出所有元素 n );v i si t(sq);p r i n tf (n );P ri n tf (输出删除的位置:”);sca n f (绘d,&a);i f (b o o=L i s t D e 1 e t e _ S q(sq,a)Ip r i n t f (数据删除成功!-n );e l s eIp ri n tf C 没有删除成功-n );)P r i n t f (输出所有元素:n);vi si t(sq);p r i n tf (n );p ri n tf (输出要显示数据的位置:);sca n f (%d,z,&a);p r i n t f (输 出:1
9、 位置数值 n ,a );i f (a l e n gt h )P r in tfC-输出位置的数据不存在 n );)e Ise(G e t E 1 em(sq,a);)环节:1.初始化空表2.顺序插入数据后输出所有元素3.选择删除位置,删除数据后输出所有元素4 .选择查看的数据位置,输出选择查看的数据四:实验结果及分析口XW il初 安 台d七I nJ-输入4个 妾 攵 据 二12 3 4 -徜 功!-!-!-与 俞 出 所7f r12 3 4播出RO J徐的位置;2 绒据朋峥成功!与俞出月片有 i,.M :13 4忤 前 士 菱 显 缶 奏 攵 据 白 勺 位 第L 3丽出3母互数值住 叟
10、 狗 立 开 自 车 氤 入 二 法分 析:本 程 序 在 实 现 顺 序 存 储 插 入 以 及 删 除 i 个元素开始的k 个元素删除(数据类型为整型)。之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置。数据结构实验报告题目:_ _ _ _ _ _ _ _ 树_ _ _ _ _ _ _ _ _班级:网络工程1 4 01班学号:_ _ _ _ _ _指导教师:高峰日期:2023/7/6实验二:树一:实验规定掌握二叉树,二叉树排序数的概念和存储方法。掌握二叉树的遍历算法。纯熟掌握编写实现树的各种运算的算法。二.实验内容记录一棵二叉树中每种类型节点数(度为0/1/2的节点数)。三:
11、实验过程及环节#i n c 1 ud e#inc lud e#inc lu d e type d e f stru ct Bi t No de(int d a t a;struc t B itN o d e *1 c hild,*rc hil d ;B itN od e,*B i t T re e ;B i t T re e B itT re e I n it()B itT re e B T;B T=(B itN od e*)ma 1 lo c (size o f(B i t N o d e);B T=N U L L ;re t u r n B T;!B it Tr ee B i t T r
12、e e C re a t(B i tT re e&BT)int c h;printf(请输入节点的内容,输入0时结束建立!n);se a nf(M%d H,&c h);if(c h=0)B T=N U L L;e lse B T =(B it T re e)m a Ho c(si z e o f(B i t N o d e );B T-d a ta二c h;B i tT re e C r e a t(B T-1 c hild);B i t T r e e C re a t(B T-r c hild);Ir e tu r n B T ;vo i d B itT re e E mpty(B i t
13、 Tr ee BT)if(B T=N U L L)P rintf(”树为空!n);e l s epri n tf(树非空!n );)void P re O rd e rT r a ve rs e (B itT re e B T)if(B T!=N U L L)printf(u 树结点的内容为:d n,B T-d a t a );P re O rd e r T ra ve rs e (B T 1 c h i 1 d );P r e O rd e rT r a ve r s e(B T-rc hild);v oid I n 0 rd e rT ra ve r s e (B i tT re e B
14、T)i f(B T!=N U L L)I n 0 r d e r T r a ve rse (B T-lc hild);printf(树结点的内容为:d n,B T-d a ta);I nO rd e rT r a ve rse (B T-rc hild);)v o i d P ostO rd e rT r a ve r s e (B it T r e e B T)i f(B T!=N U L L)P o s tO rd e rT ra ve rse(B T-lc hi1 d);P o s t 0 r d e rT ra ve rs e (B T-lc h i 1 d);p r int f(”
15、树结点的内容为:d n,B T-d a ta );)int c o u n t(B itT r e e B T)i f(B T=N U L L)re tu r n 0;e lsere tur n(c oun t(B T 1 c h ild)+c oun t(B T-r c hild)+l);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 nT r eeDept h(BT-lc h i 1 d);j=B i n T r e e Depth(B T-rc h i 1 d);i
16、 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 r eeClear(BT-1 chil d);if(BT-r ch ild)Bin TreeC 1 ear(BT-r chi 1 d);f ree(BT);BT=NULL;)main()i n t i=1,j,1 ;B i t T r e e BT;whil e (i!=0)printf(-欢迎使用-n*);pr i ntf(请选择要进行的操作 n );pr intf(,zl.初始化一棵树2
17、.建 立 一 棵 树 3.判断树是否为空 n);p rintf(4 .按前序遍历树 5 .按 中 序 遍 历 树 6.按后序遍历树 n );prin t f(“7.求树的深度 8 .求树的结点数9.把树清空 n);P ri n tf(0.退出操作界面 n);printf-谢谢使用-n”);sc a nf(u%dz/,&j);swi t c h(j)c a se 1 :B T=B itT re e I n it();pri n t f(树已经初始化!n );b re a k;c a s e 2:B it T re e C re a t(B T);b re a k;c a s e 3:B it T
18、 re e E mp t y(B T);b r e a k;c a se 4:P re O rd e rT ra v e r s e(B T);b r e a k;c a s e 5 :I nO r d e rT ra v e rse (B T);b re a k;c a s e 6:P ost O rd e r T ra v e r se (B T);b re a k;c a se 7:1=B i n T re e D e pth(B T );pri n t f(“树的深度为:%d n,1);b re a k;c a se 8:l=c ount(B T);pr i ntf(树的结点数为:%d
19、 n,1 );b re ak;c a s e 9:B inT r e e C l e a r(B T);printf(树已经清空!n);b re a k;c a se 0 :e x it(0);)环节:1.选择进行的操作2.初始化、建立、判断树是否空、先/中/后序遍历、求深度/结点,清空树3.显示结果四:实验结果及分析B&UsersdellDesktop5WdemoDebugs.exe-双 迎 使 用-请解要进行的操作1.初雌一棵树2.建立一嬲工到辆提否为空曲 序 颤 树5.按巾序遍历树6.按 后 序 遍 历 树7.求树的深度8.求物结毓9.把 树 清 空Q,触麻界面-谢谢觑-请输入节点的内容
20、确入洞结束建立!342568964请输入节点的内容输入丽触建立!-欢迎使用-请选择要进行的操作1.初始化一棵树2.建立一棵树3.判断树是否为空4.按前序遍历树5.按中序遍历树6.按后序遍历树7.求 树 的 深 度8.求树的结点数9.把树清空0.退出操作界面-谢谢使用-树结点的内容为:3树结点的内容为:4树结点的内容为:2树结点的内容为:5树结点的内容为:6树结点的内容为:8树结点的内容为:9树结点的内容为:6树结点的内容为:4_ erm-E-AVJiE-请选择要进行的操作L初始化一棵树2.建立一棵树3.判断树是否为空4.按前序遍历树5.按中序遍历树6.按后序遍历树7.求 树 的 深 度8.求树的结点数9.把树清空0.退出操作界面-谢谢使用-8树的结点数为:9-欢迎使用-请选择要进行的操作1.初始化一棵树2.建立一棵树3.判断树是否为空4.按前序遍历树5.按中序遍历树6.按后序遍历树7.求 树 的 深 度8.求树的结点数9.把树清空0.退出操论界面-谢谢使用-树的深度为:9分析:本程序不仅可以记录一棵二叉树中每种类型节点数(度 为0/1/2的 节 点 数)。同时 让 他 有 以 下 功 能:1.初 始 化 一 棵 树。2.建立一棵树。3.判 断 树 是 否 为 空。4.分别按先/中/后序遍历树。5.求树的深度。6.求树的结点数。7.清空树。