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

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

一、思维导图

二、重要概念的笔记

顺序表

1.顺序表建表一般有头插法尾插法两种方法
2.是由一段物理地址连续的存储单元构成的线性结构,一般采用数组存储
3.空间连续,支持随机访问[时间复杂度为O(1)]
4.插入删除的时间复杂度为O(n)

链表

1.分为单链表双链表循环单链表循环双链表
(1)单链表仅包含指向下一位的一个指针,只能单向遍历
(2)双链表包含指向下一位和上一位的两个指针,因此可以双向遍历
(3)循环单链表将表头和表尾相连,形成一个环状结构(循环双链表与循环单链表相似)
2.链表使用指针连接节点,故长度不固定,可以任意增删,也无需使用连续的空间
3.空间利用率,每个数据元素都必须存储一个(或两个)指向下一节点(或前一节点)的指针
4.每个数据元素仅能访问周围一个(或两个)元素,故遍历访问特定元素只能依次遍历,时间复杂度为O(n)
5.插入删除的时间复杂度为O(1)

1.栈是一种特殊的线性表,分为顺序栈链栈。存储规则为LIFO,即后进先出
2.允许进行插入删除操作的一端称为栈顶,另一端称为栈底
3.进栈,出栈分别指对栈顶进行插入和删除操作
4.查找、存储、插入、删除等操作仅能对栈顶元素进行操作

队列

1.队列是一种特殊的线性表,分为顺序队列链式队列循环队列。存储规则为FIFO,即先进先出
2.队列包含表的前端元素队头和表的后端元素队尾
3.仅允许在队头进行出队操作,即删除元素;同样的,仅能在队尾进行入队操作,即插入元素

1.串(String)是由零个或多个字符组成的有限序列,又称字符串,是一种特殊的线性表。但由于特殊性较强,故在思维导图中单独分块。
2.包含0个字符的字符串称为空串
3.串中任意连续字符组成的子序列称为该串的子串
4当串按字节(Byte)为单位地址时,一个存储单元刚好存储一个字符,串中相邻的字符顺序地存储在地址相邻的存储单元中
5当串按字(例如1字32位)为单位地址时,一个存储单元可以有4个字节组成。此时顺序存储结构又有非紧凑格式紧凑格式两种存储方式。
(1)非紧凑格式中一个地址只存储一个字符。这样做使得运算处理简单,但缺点是存储空间十分浪费
(2)紧凑格式中一个地址能存储四个字符。这样做空间的利用率更高,但对串中的字符的处理效率比较低

三、疑难问题及解决方案

KMP算法的理解

码不动了,后补

posted @ 2020-03-28 16:29  #EpicBrozo  阅读(111)  评论(0编辑  收藏  举报