数据结构-基于“概论”的实验报告总结
数据结构-基于“概论”的实验报告总结时间2022.09.19一知识点范围1数据结构是什么2数据结构的逻辑与物理结构3算法与算法的时间复杂度和空间复杂度4预备知识小结C语言二重点知识概况1数据元素是基本单位数据项是最小单位2数据结构三要素数据的逻辑结构数据的存储结构数据的运算3数据的逻辑结构分为线性与非线性or 集合线性“一对一”树形“一对多”图形“多对多”4数据的存储结构分为顺序存储可随机访问但不利于修改链式存储利于修改且利于插入与删除但不能够随机访问索引存储附加建立一个索引表由关键字和地址组成可提高数据检索速度散列存储构造散列函数5数据的逻辑结构和存储结构关系存储结构是逻辑结构的映像与元素本身映像是数据结构的实现逻辑结构是数据结构的抽象6算法的特性有穷性确定性可行性输入0个或多个输出1个或多个7优秀算法要求了解正确性可读性健壮性高效性低存储量8算法分析标准时间复杂度数量级越大效率越低O(1)O(log2 n)O(n)O(nlog2 n)O(n2)O(n3)O(2^n)和空间复杂度核心为算法所耗费的存储空间9数据的逻辑结构与数据元素本身的形式内容相对位置个数无关也与所使用的计算机无关10算法是一个有穷指令的集合11一个数据结构是由一个逻辑结构和这个逻辑结构上一个基本运算集构成的整体C语言参考资料C语言参考资源三实验一【问题一】参考课本《数据结构-刘畅姚雪峰版》-书P10-2-(1)【代码】#includestdio.h#defineN4voidfun(int(*t)[N],intm){inti,j;for(i0;iN;i){for(jN-1-m;j0;j--)t[i][jm]t[i][j];for(j0;jm;j)t[i][j]0;}}intmain(){intt[][N]{21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j,m;printf(\n原始矩阵为\n);for(i0;iN;i){//遍历二位数组for(j0;jN;j){printf(%2d ,t[i][j]);}printf(\n);}printf(请输入要右移的位数m (m%d)\n,N);scanf(%d,m);fun(t,m);printf(\n 右移后的矩阵为\n);for(i0;iN;i){for(j0;jN;j){printf(%2d ,t[i][j]);}printf(\n);}}【运行截图】二【问题2】参考课本《数据结构-刘畅姚雪峰版》-书P10-2-(2)【代码】#includestdio.hvoidfun(float*p,float*q,float*s){//利用两两比较floatk;if(*p*q){k*p;*p*q;*qk;}if(*p*s){k*s;*s*p;*pk;}if(*q*s){k*q;*q*s;*sk;}}voidmain(){floata,b,c;printf(请输入三个小数a,b,c);scanf(%f\n%f\n%f,a,b,c);printf(这三个数分别是\n);printf(a%4.1f,b%4.1f,c%4.1f\n\n,a,b,c);fun(a,b,c);printf(按从大到小排序后这三个数分别为);printf(a%4.1f,b%4.1f,c%4.1f\n\n,a,b,c);}【运行截图】三【问题2】参考课本《数据结构-刘畅姚雪峰版》-书P10-2-(3)【代码】#includestdio.h#includestring.h//函数预编译#defineN3//学生人数typedefstructss{charnum[10];ints;}STU;//构造结构体类型STUvoidfun(STU a[],STU*s){inti;strcpy(s-num,a[0].num);//利用函数strcpy()复制字符串到s-nums-sa[0].s;for(i0;iN;i){if(s-sa[i].s){strcpy(s-num,a[i].num);s-sa[i].s;}}}voidmain(){STU a[N]{{A01,81},{A02,66},{A03,89}},m;inti;printf(原始数据为\n);for(i0;iN;i){printf(学号%s 成绩%d\n,a[i].num,a[i].s);}fun(a,m);printf(结果为);printf(最低分学生学号%s, 成绩为%d\n,m.num,m.s);}【运行截图】四问题与小结【小结】1strcpy()函数定义是将一个字符串复制到另一块空间地址中 的函数‘\0’是停止拷贝的终止条件同时也会将 ‘\0’ 也复制到目标空间。使用方法开头要加预编译“#include string.h”#define_CRT_SECURE_NO_WARNINGS#includestdio.h#includestring.hintmain(){chararr1[10]**********;chararr2[10]abcd;Char arr[10]”#########”;printf(%s\n,strcpy(arr1,arr2));printf(%s\n,strcpy(arr1,arr2));printf(%s\n,strcpy(arr,“hello”));return0;}Tip:源字符必须以 \0’结束;目标空间必须足够大以确保能放源字符串;目标空间必须可变;