zoukankan      html  css  js  c++  java
  • 数据结构第一章

    本人使用的书是李春葆主编的数据结构教程第五版;

    第一章呢,讲了一些时间复杂度,空间复杂度,数据的逻辑结构物理结构等等的一些定义以及一些简单的代码示例;

    集合、线性结构、树形结构、图形结构;

    顺序存储结构、链式存储结构、索引存储结构、哈希存储结构;

    第五版相较于第四版增加说明了一下 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 }
    View Code

    第二题: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 }
    View Code

    第三题:

    说实话,我最开始只能想出 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;
    }
    View Code

    有错误敬请指正,虚心接受;

    2020-03-14

  • 相关阅读:
    使用dfs求解全排列
    并查集
    Best Cow Line
    Saruman's Army
    Fence Repair
    Laking Counting
    淘宝商品定向爬取
    爬取股票信息
    python中的正则表达式的使用

  • 原文地址:https://www.cnblogs.com/2015-16/p/12491868.html
Copyright © 2011-2022 走看看