数据结构,算法及线性表总结

思维导图

重要概念笔记

  1. 顺序存储结构是从内存中取出一段连续地址的空间,将数据依次连续的存储在这段空间中。
  2. 链式存储结构是指数据存储在内存中的地址是离散的,以数据节点为单位,每个节点包括数据域和指针域。
  3. 判断算法效率时,函数中的常数和其他次要项可省略,只需关注最高项的阶数。
  4. 队列在队尾入队,队头出队,即两边都可以操作;栈的进栈和出栈都是在栈顶进行,无法对栈底直接进行操作。
  5. 判断队空:Q.rear==Q.front;判断队满:(Q.rear+1)%Maxsize==Q.front;队头指针进1:front=(front+1)%Maxsize;队尾指针进1:rear=(rear+1)%Maxsize;
  6. BF算法的最好时间复杂度为O(n+m);最坏时间复杂度为O(n*m);KMP算法的时间复杂度为O(n+m);
  7. next[]数组表明了若模式串中的某字符在主串中失配后,下次需要匹配的模式串中的字符。

疑难问题及解决方案

一开始难以理解KMP算法及next和nextval的计算,后来通过询问同学及查看老师的录播理解了:主串的起始位置=上一轮匹配的失配位置;模式串的起始位置=失配位置的next值。计算next[j]时首先要找到模式串中的公共前后缀,第一位next[j]值设为0,后继next[j]值为最长公共缀+1;若t[next[j]]=t[j],则nextval[j]=nextval[next[j]],否则nextval[j]=next[j]

posted @ 2020-03-28 21:01  Vancciiii  阅读(270)  评论(0编辑  收藏  举报