zoukankan      html  css  js  c++  java
  • 数据结构小结

    一、思维导图

    二、重要概念

    1.逻辑结构

    1.线性结构

    1.线性结构是n个数据元素的有序(次序)集合。
    2.集合中必存在唯一的一个"第一个元素";
    3.集合中必存在唯一的一个"最后的元素";
    4.除最后元素之外,其它数据元素均有唯一的"后继";
    5.除第一元素之外,其它数据元素均有唯一的"前驱"。

    2.树形结构

    树形结构指的是数据元素之间存在着“一对多”的树形关系的数据结构。

    3.图状结构

    在图结构中任意两个元素之间都可能有关系,也就是说这是一种多对多的关系。

    2.线性表

    1.顺序存储

    1.逻辑上相邻的元素 ai, ai+1,其存储位置也是相邻的;
    2.存储密度高,方便对数据的遍历查找。
    3.对表的插入和删除等运算的效率较差。

    2.链式存储

    1.逻辑上相邻的元素 ai, ai+1,其存储位置也不一定相邻;
    2.存储稀疏,不必开辟整块存储空间。
    3.对表的插入和删除等运算的效率较高。
    4.逻辑结构复杂,不利于遍历。

    3.队列

    为克服顺序队中有可能出现"假溢出"现象,应把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。
    出入队采用数学上的求余运算。
    队首指针+1:q.front = (q.front + 1) % MaxSize
    队尾指针+1:q.rear = (q.rear + 1) % MaxSize
    队列长度:(q.rear+MaxSize-q.front)%MaxSize
    队空判断:r->rear==r->front
    队满判断:(q->rear + 1) % MaxSize == q->front

    三、疑难问题及解决方案

    KMP算法的实现

    void Getnext(int next[],String t)
    {
       int j=0,k=-1;
       next[0]=-1;
       while(j<t.length-1)
       {
          if(k == -1 || t[j] == t[k])
          {
             j++;k++;
             if(t[j]==t[k])
                next[j] = next[k];
             else
                next[j] = k;
          }
          else k = next[k];
       }
    }
    int KMP(String s,String t)
    {
       int next[MaxSize],i=0;j=0;
       Getnext(t,next);
       while(i<s.length&&j<t.length)
       {
          if(j==-1 || s[i]==t[j])
          {
             i++;
             j++;
          }
          else j=next[j];           
       }
       if(j>=t.length)
           return (i-t.length);     
       else
          return (-1);                
    }
    
    
  • 相关阅读:
    matab plot指令和低通滤波器的响应图
    matlab中hold指令、figure指令及subplot指令的使用
    matlab中axis的使用
    matlab switch case 和 try catch用法示例
    matlab中使用elseif和if嵌套的对比
    matlab中运用项目思维分析问题并解决问题
    matlab图像显示程序模板
    matlab最简单程序模板
    第06篇 MyEclipse 2016 安装/破解
    第05篇. Tomcat和JDK的内存配置
  • 原文地址:https://www.cnblogs.com/2b-or-not-2b-/p/12587916.html
Copyright © 2011-2022 走看看