预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
数据结构实验报告实验名称:数据结构实验学号:4558568姓名:鹅鹅鹅指导老师:鹅鹅鹅计算机与信息学院实验1线性表的抽象数据类型的实现实验目的按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果);实验环境计算机、C语言程序设计环境实验学时4学时,必做实验。实验内容直接排序和希尔排序冒泡排序和快速排序选择排序和堆排序实验步骤先给出重点部分的流程图(不是整个程序,是部分),然后把编写的代码贴上来(注意要编辑下,不要直接放这里)测试数据与实验结果可把程序运行每个重要步骤截图贴这里小结可写自己实验的体会,不能雷同,后果自负通过实验,使我更加透彻地认识到排序的重要性;实验总的来讲,并不难,但是C的调试很麻烦,我想我还是好好练习一下C语言吧。通过实验,让我认识到C语言中结构和指针的重要性。编程语言中嵌套的思想很重要,结构里面还可以套结构。附录:#include"stdio.h"#defineTRUE1#defineFALSE0#defineN100typedefstructNode{intelem[N];intlast;}List;typedefintstatus;//-----------------------------------------------------------statusInitlast(List*a){a->last=0;returnTRUE;}statusinput(List*a){inti=1;printf("\n请输入数据(数据总数小于100,且以100作为结束符):");scanf("%d",&(a->elem[i]));while(a->elem[i++]!=100){a->last++;scanf("%d",&(a->elem[i]));}returnTRUE;}statussearch(List*a,intb){intlow=1,high=a->last,mid=0;while(low<=high){mid=(low+high)/2;if(b==a->elem[mid])returnmid;elseif(b<a->elem[mid])high=mid-1;elselow=mid+1;}returnTRUE;}//--------------------------------------------------------------------intpass(List*a,intlow,inthigh){intx=a->elem[low],left=low,right=high;while(left<right){while(left<right&&a->elem[right]>=x)right--;if(left<right){a->elem[left]=a->elem[right];left++;}while(left<right&&a->elem[left]<=x)left++;if(left<right){a->elem[right]=a->elem[left];right--;}}a->elem[left]=x;returnleft;}voidsort(List*a,intlow,inthigh)//快速排序{intmid;if(low<high){mid=pass(a,low,high);sort(a,low,mid-1);sort(a,mid+1,high);}}statusput(List*a){inti;for(i=1;i<=a->last;i++)printf("%6d",a->elem[i]);printf("\n");returnTRUE;}voidbubble(List*a)//冒泡排序{inti=0,j=0,n=a->last,m,flag=1;for(i=1;i<n&&flag==1;i++){flag=0;for(j=1;j<=n-i;j++)if(a->elem[j]>a->elem[j+1]){flag=1;m=a->elem[j];a->elem