软件基础试验报告

上传人:ail****e2 文档编号:52380407 上传时间:2022-02-08 格式:DOC 页数:29 大小:253.50KB
收藏 版权申诉 举报 下载
软件基础试验报告_第1页
第1页 / 共29页
软件基础试验报告_第2页
第2页 / 共29页
软件基础试验报告_第3页
第3页 / 共29页
资源描述:

《软件基础试验报告》由会员分享,可在线阅读,更多相关《软件基础试验报告(29页珍藏版)》请在装配图网上搜索。

1、软件基础实验报告作者: 日期:计算机软件技术基础实验报告姓名:X XX班级:XX 0X01学号:30X05050XX实验一线性表:1、建立单向链表,表长任意;2、可交互输出单链表中的内容;3、编写算法计算出自己所建单链表的长度并输出;4、 删除自己所建单链表中的第K个结点,并将剩余结点输出5、将单链表倒排,输出结果。源程序如下:# in c lud e #inclu d ev mall o c.ht ypedef i n t da t aty p e;typed ef st ru ct no de/链表结构体 /dataty pe da t a;st r uct no de *ne x t;l

2、i nk 1 ist ;li n k1 ist *creat 1 i s t()/ 建立链表/ /i nt x ;1 in k l is t * h e a d, *s ;he a d=N ULL;p r intf(n输入链表数据:);scan f (%d,& x );whi 1 e (x!=0 )s=ma 1 lo c(si zeof( 1 in klist) ;/ 为链表开辟一系列的空间 /s- da t a = x;s n ext=he a d;head=s;p r i ntf(n输入链表数据:);s can f( %d ,&x);re t ur n h e ad;v oid lis t

3、 Con te nt (li n k 1ist *h )/ / 输出链表内容 /link 1 ist * s;s=h;w hi l e (s!=NULL )p r int f (%4 d ,s- data);s= s - n ext;i nt 1i stLon g (li n klist *h )/ / 计算链表长度 /i n t i=0;lin klist *s;s=h;while(s!=N U LL )i+;s = s -next;retur n (i);vo id DeleteN o de (li nk 1i st * h ,in t k)/ / 删除第 K 个节点/ /in t i =

4、 0;lin k li st *p, * q;P =h;i f (k=1)h = hn ext;free (p);el s ew h ile(ine xt ;q next=p- n ext;fre e (p);lin k li s t *DaoXu(linklist *h )/ 逆序排列链表 / /l i nkli s t *r, *q p;r=h;p =r ne x t;q=p-n ext;i f (h=NULL)p r i nt f(链表为空n );while(q ! =N ULL& h! = N U LL)p- n ex t =r;r =p;p=q;q=q- n ext;h- n ext

5、= N U L L;p _next= r;return(p);ma in ()i n t k,x;linkli s t *h ;dopr i n tf (n 功能:n );p r i nt f (1 建立链表 n);pr in t f( 2.输出链表内容;n);printf(3.获得链表长度n”);pr intf (4删除第K个节点n );p ri nt f ( 5将链表倒序输出n);p r intf( 6 .退出 n);p r i ntf(请输入功能号: n);scan f(%d, & x);if(x 6)printf(错误! n);elseswitch(x)ca se 1: h= crea

6、 tl i st();break;c ase 2:list L o n g( h );break;c a s e3: pr in t f (链表的长度是:%d, li stLong (h) ); break;ca se 4:p ri ntf(请输入要删除的节点:n);sc anf(%d,&k);Del e te Node (h,k);lis t Con tent (h ); b re a k; cas e 5: h =DaoXu(h);listC onte nt ( h);b r e a k; cas e 6: e xit(O);bre a k;whil e (1 );运行结果:安箱跑5K骨也

7、+ +姑烤丟出入输入搭表数据;為 输入错表数据目叫 输入槌表数据沖弓 输入槌表数据: 输入错耒数据:騎 输入镇表数据個畫表灯倒 的:T7WW出人 3辟功2_* - - -fenr3 1 -r-J 1号LZJ功二逢玄链表變出锈表内容:|8|5%: 内长代序# 衷奠眄倒能 槌餐量功 :立出出入 D:宝M牧祇仁丰4富權文阵夹8卵輕一巧实验总结:1 .在编写倒排链表的程序时, 对于循环的计数的控制 没有搞好,以致无法得到想要的链表;2.要给一个指针创立空间 之后才能调用它,否则会出错。解决办法:1.通过单步调试程序,调整循环次数,来使循环中的 个参数达到自己想要的 通过查阅资料,完成对链表程序的实现。

8、在写每一个子函数时,常常会遗漏小的判断条件, 比如遗漏了判 断是否为空等;还有就是在对指针操作时,有时多加了 *,或者分号写成逗号;在调试程序的过程中有很多小的错误或者判断条件错 误等。实验二在交互方式完成下列任务:1、动态交互建立二叉树,结点个数任意;2、分别用DLR LD R、LR D三种方式对二叉树进行便 利并输出结果;3、计算二叉树中的结点个数并输出;4、计算二叉树的深度并输出;源程序如下:# incl u de stdio . h# inc 1 ud e mal 1 o c .hstr uct BTN odei nt d a t a ;?struc t BTN o de *Lch i

9、1 d,*R c hi 1d ;st ruct BTNode *build(st r uc t BTNode *p);s truct B TN o de *creatren t (struc t BTNod e *p );void DLR(s tru c t BTNode *T);str uct B TNode *crea tr ent(st r uc t BTNod e *p)?int x;? pr in t f(输入根:rent=);?scanf (% d, &x);? if(x= 1 00 0 ) p=N U LL; e Ise?p- da ta=x;p Lch i I d =(s t

10、ru ct B TNod e *) malloc(s i zeof(st ructBTNode);?retup- Rchil d =( s tr u ct BTNod e *) i f ( p=NULL) r eturn p ;p Lch il d =build(p Lchi p-Rchil d =build( p Rch il d ); r n p;m a lloc(size o f (struc t BT Node);Id ); st r? iuctBTNo de *bui 1 d( s truct BTN o d ent x ;printf(输入数据(输入值为时,表示该结点为空 sc a

11、 nf (%d, &x);? i f(x= 1 0 00) p =NUL L;e lsep d at a = x;? p - L child= (s tru ct BT N o de *)m al loc( s p Rch ild = (st r uct B T Nod e *) m all):v a lue=);?i zeof( s true t oc (sizeof(s trBTNode); u ct B TNod e );? i f( p =NULL) r etur n p;p Lchi1 d= build(p- Lch il d); p-Rchild= b u i ld(p- Rchi

12、 ld);?retur n p;?vo i d DLR(st r u ct BTNod e *T)i f(T= NU LL)r et ur n;p r int f (% d , T-da t a );DLR(T Lch ild);DL R(T Rc h i ld);v o i d LD R(s tr u ct BTNod e *T)?if (T =NUL L) r et u rn;LD R (T-L chi 1 d)?pr i ntf(%d, T -da t a);LDR(T Rchi 1 d);voi d LR D(s t rue t BTN o d e * T )?i f (T= =N U

13、LL) re turn ;?LRD (T Lc h i1 d);?LRD(T-R h i1 d);? p r i ntf(” %d ,T-dat a );v o id m ai n ()?struct B TNo d e * r en t =NU LL;int flag ;?while( 1 )?n3 :后序 n )BT Node);? prin t f(选择输入的操作:n 1:创建2 :先序n 3:中序 ?scanf(%d,& f la g );?swi tch (flag)? case 1 :? r ent=( s truc t B TNode *) ma lloc( s iz e of(

14、 s t r uct rent=crea tr en t(rent);?br e a k;ca se 2 :DLR(rent) ;printf(n ) ;br e ak ;case 3: LDR ( r en t);p r intf (n) ; br e ak ;?ca se 4:L RD(re n t);pri nn) ;b re ak;运行结果: 5 AUserspU5ktopLebug-,e11入入入入入择 心刖一 刖 j 刖.!_刖. .刖II刖.1-!.-刖4 刖._ 刖二刖二- :为旺为 Hl 000! 为 0- 1000. jAjK1000l, 为辰,为 H10H0P为詁 为氐为

15、* 1她,1000,1000,1000,1080,1Q00,寛工空空空空空空空工 占善苦苫苫RE占苫苫警小 士 口士 口士 口士口士 口士 口士 口士口士 口士 n 该该阂雷囂该该该 丞疋示示-巫血亦示示亦 Ex ulKjllyEv.-.-V my _!/_valiia=l vlue=10B0 u alkie =2=5 ualue =1000 uluc =10B0 ualue=1000MAlue -8 value=1000 value=100H总作操石的卫彎先中后8 B8.liI I实验总结:通过查资料完成程序,还是在调试程序的过程中出 现恩多的错误,除了一些基本的错误,也出现了判断错误,比

16、如在进行先序,中序,后序遍历的时候都没加 i f ( k ! = NU LL)这个条件,导致在执行程序的时候,只进行先序遍历,然后 出错退出。实验三在交互方式下完成下列任务:1、根据教材上算法,完成图的深度和广度优先遍历,要求任意给定起始 点,输出结果;2、根据教材上算法,完成图的单源最短路径的算法,要求任意给定源 点,输出结果;源程序如下:#i n cl ude # in elude #def i ne Q 1 0 0 0 #d e f i ne VNum 6st r u ct GLink i nt No; in t Right;s t ruct G Lin k *Relat; ;int G

17、 VNu mVN um =/对图进行初始化/ /0 ,23,1 6 ,Q , 4 5 , Q,? Q,0,15,5 0,1 0 ,Q,2 0,Q,0,1 5,Q,Q,Q,2 0,Q, 0,35,Q,? Q,Q,Q,30,0,Q,Q,;5 ,4,Q,Q, 0s truct GLink * GLV Num;int VisitedVNum;v o id Creat e GLink(int GVNumVNum ) 立邻接表/ in ti, j;f or ( i =0 ;i v VNum; i +)GLi =q = NULL;fo r (j = 0 ; j v VNu m ; j+)if (i != j

18、)if (Gi: j 0 )&(Gij N o = j ;/ /点加入邻接表/?p-Righ t = G i: j;if (GLi = = N ULL)?GLi = p;?e l se?q Re l a t = p;q = p;/建该两将该s tru ct G L i n k * p,* q;vo id DF S(int A V Nu m VN um, int V) 起点/用于进行深度优先遍历的子函数 ,是访问/ /int i;print f ( %d , V);Vi s ited : V = 1;/for (i =0; i 0)& (A Vi v K) & (V isite/将其标记为已1

19、f (A V/该结点未被访问过d 1 != 1)DFS(A,);/访问该点/ /fo r (1= 0;1 f (Visitedi 点,访问该点/i V Num; 1 +)=1) DFS(A,i);/ /仍有未必访问过的/用于广度v o 1 d B FS(int AVN u m VNum , i n t V)优先遍历的子函数/1 nt CQVNum ;i n t a 0,b,c;int i,k= 1;fo r (i= 0 ;iVNu m ;i+)CQ1 =K;Vi s i t ed V = 1;志为访问过/CQ : 0 = V;pr 1 ntf( %d ,V);放入队列/while(k v 6&

20、 a k) /仍有结点未被访问并且队列中仍有结点的后继结点未被/ 标/ /将该结点访问/b=C Q a ;for(c=0 ; cv VNum; c+ +) /依次将队列中以结点为首的邻接表中的结点插入队列/ /f(Vis 1 ted prCQ:c=0& A b cK& A b c! = 0) in t f (%d, c);+ +k=c;/未被访问过,将其插入到队列中/Vi sit ed c =1;/标志为访问过/a+ ;for(i=0;if(V 1 sit e di=0) BF S(A, i);v VNu m;i+)void Short(i nt A V NumV N um , i nt V)

21、 起点/用于计算最短路径的子函数,V是 int Di s tV N um, PathVNum;int S = 0;in t i, k ;i n t wm, u;for (i=0;iVN um; i + +) D ist i = A Vi;/ /默认这两点之间即为最短路径/if (Dis t i K)P athi: = V;/ 存储该路径/S = S 1(1 VV V);for ( k = 0 ; kVNum;k+ +) wm = K;u = V;fo r (i = 0; iv VNu m; i + +)if (S &(1 v i)=0)& (Dis t : i wm)/该两点间存在路径/ /u

22、 = i;?wm = Di st i;S = S |(1 u);fo r (i = 0; iv VNum; i+)if (S &(1 v i)=0) & & (D istu: + A ui) v Disti)? Di s t : i = Distu + Au: i ;/ 找到新的最短路径 /P at h i = u;/更新路径长度/? f o r (i = 0 ; iv VN um; i+)/ 输出该源结点到其他各点的最短路径 /if (S &(1 i)!= 0)k = i;w h i le ( k !=V) p r in t f(%d - , k);?k = Pat hk;print f (

23、 %d ,V);p r i n t f(n , Di sti);else pr i ntf ( No Path : %d, i);m a in ()in t i, j, a, b;Cre ateGLin k (G);p rint f (1 .深度优先遍历n);/打印菜单/ /p r i nt f (2.广度优先遍历n);p ri ntf( 3 寻找单源最短路径n )prin tf (4 .退出 n);/w h ile(1)完成菜单功能/ / print f (n功能项选择从1到 4 :”);scanf (% dH, & a );if (a=1) fo r (i=0; i VNum; i + +

24、)Vis i ted : i = 0;?printf(”请输入第一个节点:);sc anf(%d, & j);?prin t f n 深度遍历 DFS是:);DFSG ,j);p rint f( n);i f (a=2) fo r (i= 0 ; iVNum ;i+)Visite d i = 0 ; p rin t f (请输入第一个节点:);?sc anf(” d ,& j);?p rint f (n广度遍历结果 BFS是:);?BFS(G,j);pr in tf(、n);? if (a=3)printf(请输入源点:);sc a nf( %d, &b);p r int f( n单源最短路径

25、是:n );Short(G,b);if (a= =4) bre a k;运行结果:jgDebugkjh7.exc,-search the grapl deejj first.sedvch tliebtoad fIvst-find the sfiortest path-exitplease inyut a nun from 1 to 4 :1lease ih)put tlie FVst node = 1The Result of DFS is: 112 J 101413 J 51jpljease 土npu七 己 num rom 1 to 4 :2lease infjut tlie first n

26、ode = 1The Result of BFS is:lJ 12J 3JJ0J5Jplease input a num front 1 tn 4 S 3input tlie source node ;1The Eesult of Shortest path is:M -2 -1= 351 = 62 -1= 153 -2 -1= 304 i n t ji;vo id duiban(int a10,i n t n,in t ke y)i nt l ow , h ig h ,mid ,f lag ;1 ow=0; h igh= n -1 ;flag=0;while( 1 owam i d) 1 o

27、w= m i d+1 ;el se high=mi d -1;i f(flag = = 1) pri n tf(是第 %d 个元素 ”,mid+1);el se pri n tf (E);v oid mao pa o(i n t a10 ,in t n ) in t i,j,temp, f la g;int jia o ,ta n g;j i a o=ta n g=0;f o r (i= 0; in-1 ;i+ +) f la g=1;for(j=0;jn_i_ 1; j+)?if (aj+1: =h i gh ) retu rn(0);i=low;j=hig h ;temp=ai ;whil

28、e(i! = j) w hil e(a j = temp ) &(ji ) j;if(j i) a i+= a j;ji+; while(a i i ) i + +;i f( j i) a :j - -=ai;ji + +;ai = temp;kua is hu(a,low,i 1);kua i shu ( a ,i+ 1,h i gh);ma in ()int i, a 10,n, q, p, t ;d o prin t n 1用对半检索法,交互检索任意给定的关键字KEY);pri n tf ( n2用快速排序法对其进行排序,并统计交换次数);p ri ntf( n 3.用冒泡排序法对其进行

29、排序,并统计交换次数和排序的趟数);pr in plea se w rite th e or der:);scan f(%d, & i);w h il e(i4)prin t f( n T h e o r d e r you print is wron g! ,please print a g ai n!); scan f(%d , &i);swi t ch (i) cas e 1:p r int f (please i n put : n);f o r( n =0;nv 10; n+ +) s ca nf ( %d ,&an);dop ri n tf (please inp u t : n)

30、;?sc anf (%d,&q);duiban (a ,10, q);?p r int f (:n );? sc an f (% d ,& p );?while( p =1);b r eak ;case 2: j i=0;?pri n tf( pl ease i np u t d at a: n );for (n=0; n8;n+) s can f (%d, &an);k uai sh u(a, 0 , 9);pri n tf (n快速排序的交换次数是 % d ,ji);printf (n 结果是);? f o r (n=0; n10;n + + ) printf ( % d ,a n );b

31、reak ; case 3:?printf(p l ease inp ut data:n);f o r (n=0; n 10;n+) scanf (% d ,& a n );?m a opa o (a, 1 0);pri nt f(n 结果是);? for( n= 0;n 10; n +) p r in tf(%d ,a n);?bre a k;c ase 4: p ri n t f( GOOD BY E! !);whil e (i !=4);运行结果:用9 ffi交换次数和排序的趟数排序;莽绕世please write the order: 1please in put :12 24 35

32、17 27 38 46 5? 6K 22 please input :蔓第弓个元素:2KE数数 字次次 键餐 关芻 的Ttt 定统统 r手幵 意: 任星 Iff- 互进进 交苴苴 柱袪法 半速泡冒 用ffi1用 1 2 3TJLJ e又叉h-tee1P75 0 8 t 6 a.d 73 tu 6 p 2 ni 7i es B a 2 e1 6 p 3怅数数 宇次次 EX交亠X 6的菲 68定统统 J耳: 处任序It-速果用用用“7 : 7 3?er 是35互进进皿 数8交苴苴O 次2 ,菲he 梅26i法法t 交 ZMte 的 2ri 序17半速泡W ;: -. J J- / e 齧1.2.3.P1please in put datai :14 25 16 17 27 39 49 3& 29 18交换体数和排序趟数分另1是1坯咛结果是:4 16 17 18 2S 27 29 99 39 491 騎半枚-2用虑班 氛用冒泡揶爺|隹彎越罰nleajse wi*lte the order-:KEV接次数和排序的趙数实验总结:子函数书上都有,所以主要函数都是参考书上的程序。 在计数时,计数的位置上出了点问题,通过认真读函数和一步一步 试,得到最终的结果。实验心得:三次计算机软件技术实验已经结束了,经过这次实验的锻炼,让我学到了许多东西,也认识到了自己在学习 及编程方面的i些不足之处。

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