数据结构第一章
Posted 2015-16
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构第一章相关的知识,希望对你有一定的参考价值。
本人使用的书是李春葆主编的数据结构教程第五版;
第一章呢,讲了一些时间复杂度,空间复杂度,数据的逻辑结构物理结构等等的一些定义以及一些简单的代码示例;
集合、线性结构、树形结构、图形结构;
顺序存储结构、链式存储结构、索引存储结构、哈希存储结构;
第五版相较于第四版增加说明了一下 typedef ,但其实相较于书中使用 typedef ,我们也可以使用模板来定义;
还有一个共用体 union ,我记得当初学习 C 的时候,觉得 union 实实在在是个bug ,到现在才知道如何简单的用一下,以往学的看似无用的知识,只是我们的层次不够接触不到它的应用,学的越来越多之后,才会发现他的用途;均可自行百度;
最后贴一下课后习题中的上机实验:
第一题:我们如何知道一个运算,需要花多长时间呢?C 里面提供了 clock 函数,可以根据这个来计算时间;记得加上头文件 time.h(ctime);
实际上这个函数需要配套使用:
1 clock_t start,finish; 2 start = clock(); 3 { 4 //你需要测试时间的代码 5 } 6 finish = clock(); 7 cout<<(double)(finish - start)/CLOCKS_PER_SEC<<endl;
CLOCKS_PER_SEC是标准c的time.h头函数中宏定义的一个常数,表示一秒钟内CPU运行的时钟周期数,
用于将clock()函数的结果转化为以秒为单位的量,但是这个量的具体值是与操作系统相关的。
1 1 #include<iostream> 2 2 #include<ctime> 3 3 4 4 using namespace std; 5 5 6 6 int main() 7 7 { 8 8 long long i,sum = 0,n = 10000; 9 9 clock_t start0,finish0,start1,finish1; 10 10 start0 = clock(); 11 11 for(i = 1;i <= n;i++) 12 12 sum += i; 13 13 cout<<sum<<endl; 14 14 finish0 = clock(); 15 15 cout<<(double)(finish0 - start0)/CLOCKS_PER_SEC<<endl; 16 16 17 17 start1 = clock(); 18 18 sum = n*(n+1)/2; 19 19 cout<<sum<<endl; 20 20 finish1 = clock(); 21 21 cout<<(double)(finish1 - start1)/CLOCKS_PER_SEC<<endl; 22 22 return 0; 23 23 }
第二题:math 函数应有尽有;
1 /* 2 0 1 1 0 1 1 2 1 3 1 1.41421 2 2 4 8 4 2 4 1.58496 1.73205 3 4.75489 9 27 8 6 5 2 2 4 8 16 64 16 24 6 2.32193 2.23607 5 11.6096 25 125 32 120 7 2.58496 2.44949 6 15.5098 36 216 64 720 8 2.80735 2.64575 7 19.6515 49 343 128 5040 9 3 2.82843 8 24 64 512 256 40320 10 3.16993 3 9 28.5293 81 729 512 362880 11 */
1 #include<iostream> 2 #include<cmath> 3 4 using namespace std; 5 6 int main() 7 { 8 int i,n = 10; 9 int sum2 = 1,sum_ = 1; 10 for(i = 1;i<n;i++) 11 { 12 cout<<log(i)/log(2)<<" "; 13 cout<<sqrt(i)<<" "; 14 cout<<i<<" "; 15 cout<<i*log(i)/log(2)<<" "; 16 cout<<i*i<<" "; 17 cout<<i*i*i<<" "; 18 cout<<(sum2 *= 2)<<" "; 19 cout<<(sum_ *= i)<<" "; 20 cout<<endl; 21 } 22 return 0; 23 }
第三题:
说实话,我最开始只能想出 k 与 根号k ,显然这种方法感觉。。。。。(想贴一张表情包)
附上一个连接,看看别人的代码;
https://www.jianshu.com/p/d6736b492720
第四题:
开始拿到这题的时候,眼睛一亮,这**不是泰勒吗,发现我是真的菜,看错了原来不是,亏我还写了一遍 e 的展开;
然后开始找规律的不归之路;
1 5!+ 4!+ 3!+ 2!+ 1! 2 =(5 + 1)4! + 3!+ 2!+ 1! 3 =[(5 + 1)4 + 1]3!+ 2!+ 1! 4 .........
#include<iostream> using namespace std; int main() { int i,n = 5,sum = 1; for(i = n;i>1;i--) sum = sum*i +1; cout<<sum<<endl; return 0; }
有错误敬请指正,虚心接受;
2020-03-14
以上是关于数据结构第一章的主要内容,如果未能解决你的问题,请参考以下文章