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

思维导图

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

重要概念

数据:是能被输入进计算机中,并能被计算操作处理的对象的总称
数据元素:是数据结构中讨论的基本单位
数据类型:整型、浮点型、字符型等等变量所具有的不同的数据种类
存储结构:又称物理结构,是描述数据具体在内存中的存储结构,分为线性结构和非线性结构
逻辑结构:是描述数据之间的相互关系,分为线性结构(一对一)、树形结构(一对多)、图状结构/网状结构(多对多)
算法:时间复杂度表示算法执行时间与问题规模之间的关系,是对运算时间的一个大致估计;空间复杂度表示算法执行时占用的内存空间

线性表

线性表是一种典型的线性结构,它的存储方式分为顺序存储和链式存储,即通过数组和链表的方式进行存储
顺序存储的优点在于能通过数组下标快速访问数据,缺点是进行插入和删除时需要移动大量数据
相反的链式存储的优点是在进行插入和删除时能快速进行而不需要移动数据,但其缺点也很明显,就是无法快速访问数据,只能由表头开始进行查找数据

链式存储方式又分为单向链表、双向链表和循环链表

单向链表只有后驱,是常规意义上的链式存储
双向链表有前驱和后驱,因而当元素比较靠经表尾时可以通过从链表尾回读更快的查找到元素
循环链表有单向循环链表和双向循环链表,事实上就是将链表的尾接到头来

堆栈

堆栈是一种限制在表的一端进行插入和删除的线性表,操作的一端叫栈顶,另一端为栈底
最主要的特征就是先进后出
栈也分为顺序栈和链栈
栈经常被用于处理递归、括号匹配、米狗求解、表达式形式转换等问题上

队列

队列和堆栈类似,也是运算受限的线性表,不同的是,它插入和删除操作分别在表头和表尾两端进行,我们将插入操作端称为队头,删除操作端称为队尾
队分为顺序队列和链队列

串是由字符数据组成的有限序列
空串和空白串不同,空串是数据长度为零的串,即不含任何字符,空白串是由一个或多个空格组成的串
串的最主要的操作在于串匹配,将主串称为目标串,子串称为模式串,其中最主要的是BF算法和KMP算法,BF算法又称暴力算法,通过主串与模式串匹配,当失配时,将模式串的第一个数据与原来与模式算匹配的主串的第二个数据进行匹配,依次进行直至匹配成功。

疑难问题及解决方案

理解KMP算法的困难(初接触确实比较蒙,但后来确实发现其十分精巧)
解决方案:在网上找到了一篇比较通俗易懂的解释
[https://www.sohu.com/a/336648975_453160]

相关推荐