zoukankan      html  css  js  c++  java
  • 《数据结构》线性表

      “太专注于知识,而忽略得来知识的方法,难以将知识迁移..”第一节课上听到的,感觉很有道理,不过自己尚未琢磨明白。

    刚刚开始学《数据结构》这门课其实是没什么头绪的,但是坐在前排也算是给自己的一个动力去学习这门课程。没有很多的话说,直接上图。

      以上基本是我在课堂上的一些笔记,也算是小结了,不过有点简陋,再补充一些我认为比较重要的:

      

      *线性表都是逻辑上相邻,但物理上不一定相连,如数组是物理上相邻,而链表则是物理上不一定相邻。

      *链表中头结点存在的意义:(1)便于首元结点的处理。(2)便于空表和非空表的统一处理。亦即在边界和非边界非处理上保持操作的一致性。

      *创建链表时不论是头插法还是尾插法,都需要将单链表L初始化。否则头插法中的p->next就会变成野指针,而尾插法r->next会出错?

      *顺序表和链表各有优势,顺序表的空间利用率为1,而链表的空间利用率少于1;在进行插入删除操作(数据量足够大)时,链表的时间复杂度小于顺序表;在进行查询操作时时间复杂度不相上下。

      *合并链表时采用带尾指针的单循环链表效果更佳。

      *在有序表的合并中,采用归并排序时间复杂度为O(m+n)从而避免pta上的超时问题。

      毕竟学习是理论上的,时间才是检验真理的唯一标准。

      果不其然,在上机课的题目,看似自己已经做出来了,可是后面总有一个随机数而不是样例里的,而且自己不会debug,所以我自闭了,最后我手动检查,最后发现原来是把i++和j++放在a[k++]=p[i]前面了,导致下标完全改变,并且自己检查要半天才能弄出来,当时真的很自闭。。。

      

      正确代码:

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 int main() 
     5 {
     6     int n,m,k=0;
     7     cin>>n>>m;
     8     int a[200005];    //开辟大数组存放相同元素 。 
     9     int*p=new int[n];
    10     int*q=new int[m];
    11     for(int i=0;i<n;i++)
    12         cin>>p[i];
    13     for(int i=0;i<m;i++)
    14         cin>>q[i];
    15     sort(p,p+n);    //以下两行均为调用函数使数组升序存放 。 
    16     sort(q,q+m);
    17     for(int i=0,j=0;i<n&&j<m;){
    18         if(p[i]==q[j]){     //k为相同元素个数 ; 
    19             a[k++]=p[i];    //对俩数组进行遍历,遇到相同则存放到大数组中。 同时下标都+1; 
    20             i++;
    21             j++;
    22         }
    23         if(p[i]<q[j])       //对于不相等的情况,则使俩数中较小的那个下标+1,再进行比较 。 
    24             i++;
    25         if(p[i]>q[j])
    26             j++;
    27     }
    28     cout<<k<<endl;
    29     for(int i=0;i<k;i++){
    30         if(i!=k-1) cout<<a[i]<<" ";                //输出已存放的元素,最后一个元素不带空格 。 
    31         else cout<<a[i];
    32     }
    33     return 0;
    34 }

      回到宿舍做程序填空题时,不知道为什么自己没有办法集中精力去解决他,头绪是有的,如下图:

      

      但是想了想实现代码,不想想了,于是开始干其他无聊的事情,打打游戏,看看番,不知不觉就开始忘了这件事,于是又要重新弄,下次得改。

      说到参考的话,也就是抱紧班里acm几位大佬的腿毛。

      我觉得自己需要投入更多的时间去编程,

      http://www.docin.com/p-1586344893.html,看了下大神的笔记之类觉得自己就是个菜鸡。

      目标:下周继续写博客。

      

      “太专注于知识,而忽略得来知识的方法,难以将知识迁移..”

      

  • 相关阅读:
    Jmeter性能监测及安装插件(推荐)
    测试用例使用传统excel还是思维导图(Xmind、MindManager等)?
    测试用例设计
    一个资深测试员的感悟
    log4j教程 10、PatternLayout
    log4j教程 9、HTMLLayout
    log4j教程 8、日志格式化
    log4j教程 7、日志记录级别
    log4j教程 6、Logger方法
    log4j教程 5、示例程序
  • 原文地址:https://www.cnblogs.com/jyf2018/p/10546061.html
Copyright © 2011-2022 走看看