数据结构概念总结

数据结构概念总结

基本概念

  1. 数据: 能被输入到计算机中,且能被计算机处理的符号的集合 。

  2. 数据元素:数据集合中的一个个体。

  3. 数据项:数据的不可分割的最小单位。

  4. 数据类型:在一种程序设计语言中,变量所具有的数据种类。

  5. 逻辑结构:数据之间的相互关系。

    • 集合:结构中的数据元素除了同属于一种类型外,别无其它关系。
    • 线性结构:数据元素之间一对一的关系
    • 树形结构:数据元素之间一对多的关系
    • 图状结构:结构中的数据元素之间存在多对多的关系
  6. 存储结构:数据在计算机中的表示。

  7. 算法五个特性: 有穷性、确定性、可行性、输入、输出

  8. 算法设计要求:正确性、可读性、健壮性、高效率与低存储量需求。

  9. 时间复杂度:算法的执行时间与原操作执行次数之和成正比。时间复杂度有小到大:O(1)、O(logn)、O(n)、O(nlogn)、O(n2)、O(n3)。幂次时间复杂度有小到大O(2n)、O(n!)、O(n^n)。

  10. 空间复杂度:若输入数据所占空间只取决于问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占额外空间

线性表

  1. 线性表是一种典型的线性结构。头结点无前驱有一个后继,尾节点无后继有一个前驱。

  2. 线性表的顺序存储结构:把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。

    ​ 插入:插入新结点,之后结点后移。平均时间复杂度:O(n)

    ​ 删除:删除节点,之后结点前移。平均时间复杂度:O(n)

  3. 随机存取:访问时可以按下标随机访问 。

  4. 链式表:用一组任意的存储单元来依次存放线性表的结点,这组存储单元即可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。

​ 每个结点的存储地址是存放在其前趋结点next域中。

​ 查找:只能从链表的头指针出发,顺链域next逐个结点往下搜索,直到搜索到第i个结点为止。链表 不是随机存取结构。

​ 插入:先找到表的第i-1个的存储位置,然后插入。新结点先连后继,再连前驱。

​ 删除:首先找到第i-1个的存储位置p。然后令p–>next指向第i个的直接后继结点,即把第i个从链上摘下。最后释放结点ai的空间。

  1. 栈是限制在表的一端进行插入和删除运算的线性表,进行插入、删除操作的一端为栈顶,另一端为栈底。
  2. 先进后出。
  3. top= -1时为空栈,top=0只能说明栈中只有一个元素,并且元素进栈时top应该自增 。
  4. 顺序栈:顺序存储结构。需要考虑栈满的情况。
  5. 链栈:链式存储结构。插入和删除操作仅限制在链头位置上进行。栈顶指针就是链表的头指针。通常不会出现栈满的情况。 不需要判断栈满但需要判断栈空。
  6. 例子:迷宫求解。

队列

  1. 队列是一种运算受限的线性表。只允许在表的一端进行插入,另一端进行删除。进行删除操作的一端称为队头,进行插入操作的一端称为队尾。
  2. 先进先出。
  3. 顺序队列:顺序存储结构。
  4. 链队列:链式存储结构。限制仅在表头删除和表尾插入的单链表。显然仅有单链表的头指针不便于在表尾做插入操作,为此再增加一个尾指针,指向链表的最后一个结点。
  5. 队空条件:rear == front
  6. 队满条件:(rear+1) % 队列的最大长度==front
  7. 入队:(rear+1)% 队列的最大长度
  8. 出队:(front+1)% 队列的最大长度

  1. 串是零个或多个字符组成的有限序列。
  2. 空串:长度为零的串。
  3. 空白串:串中包含一个或多个空格字符。
  4. 串中任意连续字符组成的子序列为该串的子串。
  5. 串的模式匹配:目标串中找出字串出现的位置。
  6. next值:找到串相同的前缀后缀包含字符的数量再+1 。没有相同的则为零。
posted @ 2020-03-28 21:58  20190211飞飞  阅读(187)  评论(0编辑  收藏  举报