下载后可任意编辑 计算机软件基础 上机实验报告(一) XXXXXX 班 XXX 实验目的 掌握线性表在顺序分配下的插入与删除运算;掌握线性表的链式存储结构;掌握插入排序的方法;并掌握一种产生随机数的方法。 实验内容 1. 产生 1 个 至 999 间的随机整数,并以产生的次序存入一个数据文件中。 2. 编制一个程序,依次实现以下功能 (1) 定义一个有序(非递减)线性表,其最大容量为 1,初始时为空。 (2) 从由 1 产生的数据文件中依次取前 N 个随机整数,陆续插入到此线性表中,并要求在每次插入后保持线性表的有序性。最后将此有序线性表打印输出。 (3) 在由(2)产生的线性表中,依在 1 中产生的次序逐个将元素删除,直至表空为止。 3. 以 N=1 及 N=4 分别运行 2 的程序,并比较它们的运行时间。 4. 编写一个程序,用插入排序依次将 1 中产生的 1 个随机整数链接成有序链表(不改变原随机数在存储空间中的顺序)。 源代码与运行结果 #include #include #include main() { FILE *fo=fopen("1_txt","w"); int i,j; srand((unsigned)time()); for (i=;i<=999;i++) fprintf(fo,"%d\n",rand()%1); fclose(fo); printf("1 个随机数已输出至目录下 1_txt 文件\n"); system("pause"); } 输出文件 1_txt 如下(因输出文本长度缘故,此处只截了一幅图) #include #include #include下载后可任意编辑 #define N 1 main() { int a[N]={}; int i,j,m,w,num=; FILE *fi=fopen("1_txt","r"); clock_t start,finish; double duration; //Part 1 start=clock(); m=; fscanf(fi,"%d",&num); a[]=num; w=m; for (j=1;j<=N-1;j++) { w=m; fscanf(fi,"%d",&num); while ((a[w]>num)&&(w>=)) w--; w++; for(i=m;i>=w;i--) a[i+1]=a[i]; a[w]=num; m++;下载后可任意编辑 } finish=clock(); duration=(double)(finish - start)/CLOCKS_PER_SEC; printf(" 执 行 %d 个 数 据 插 入 操 作 完 成 ! 用 时 %f 秒 , 得 到 线 性 表 如 下 \n",m+1,duration); for (i=;i