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

思维导图

重要概念

数据:是能被输入进计算机中,并能被计算操作处理的对象的总称

数据元素:是数据结构中讨论的基本单位

数据类型:整型、浮点型、字符型等等变量所具有的不同的数据种类

存储结构:又称物理结构,是描述数据具体在内存中的存储结构,分为线性结构和非线性结构

逻辑结构:是描述数据之间的相互关系,分为线性结构(一对一)、树形结构(一对多)、图状结构/网状结构(多对多)

算法:时间复杂度表示算法执行时间与问题规模之间的关系,是对运算时间的一个大致估计;空间复杂度表示算法执行时占用的内存空间

线性表

线性表是一种典型的线性结构,它的存储方式分为顺序存储和链式存储,即通过数组和链表的方式进行存储

顺序存储的优点在于能通过数组下标快速访问数据,缺点是进行插入和删除时需要移动大量数据

相反的链式存储的优点是在进行插入和删除时能快速进行而不需要移动数据,但其缺点也很明显,就是无法快速访问数据,只能由表头开始进行查找数据

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

单向链表只有后驱,是常规意义上的链式存储

双向链表有前驱和后驱,因而当元素比较靠经表尾时可以通过从链表尾回读更快的查找到元素

循环链表有单向循环链表和双向循环链表,事实上就是将链表的尾接到头来

堆栈

堆栈是一种限制在表的一端进行插入和删除的线性表,操作的一端叫栈顶,另一端为栈底

最主要的特征就是先进后出

栈也分为顺序栈和链栈

栈经常被用于处理递归、括号匹配、米狗求解、表达式形式转换等问题上

队列

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

队分为顺序队列和链队列

串是由字符数据组成的有限序列

空串和空白串不同,空串是数据长度为零的串,即不含任何字符,空白串是由一个或多个空格组成的串

串的最主要的操作在于串匹配,将主串称为目标串,子串称为模式串,其中最主要的是BF算法和KMP算法,BF算法又称暴力算法,通过主串与模式串匹配,当失配时,将模式串的第一个数据与原来与模式算匹配的主串的第二个数据进行匹配,依次进行直至匹配成功。

疑难问题及解决方案

理解KMP算法的困难(初接触确实比较蒙,但后来确实发现其十分精巧)

解决方案:在网上找到了一篇比较通俗易懂的解释

[https://www.sohu.com/a/336648975_453160]

原文地址:https://www.cnblogs.com/Sakura-demon/p/12568597.html

时间: 2024-07-29 06:31:56

数据结构、算法及线性表总结的相关文章

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

一.思维导图 二.重要概念 1:时间复杂度 时间复杂度是评判算法优劣的最重要的标准,所以要掌握时间复杂度的运算非常重要,并且要熟记常见时间复杂度以及对应的关系 2:链表的插入删除操作 注意:节点是包括数据域和指针域,插入和删除时要注意指针的指向问题,插入时,插入的节点跟前一个节点的下一个节点相连时,前一个节点也要与插入的节点相连,不然会出现断链情况,删除时也要链连接后在删除节点 3:栈与队列 栈和队列很想象,但要注意其区别,栈是后进先出(LIFO),而队列是先进先出(FIFO).并且栈可以将递归

C++数据结构与算法_2_线性表 --顺序表的应用示例

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { fon

C++数据结构与算法_1_线性表 --顺序表的实现与分析

顺序表的实现与分析 引 --线性表的抽象基类: template <typename T> class LinearList { public: LinearList(); ~LinearList(); virtual int Size() const = 0; //返回线性表所能够存储的最大长度 virtual int Length() const = 0; //当前线性表的长度 virtual int Search(T &x) const = 0; virtual int Loca

数据结构学习笔记——线性表的应用

数据结构学习笔记——线性表的应用 线性表的应用 线性表的自然连接 计算任意两个表的简单自然连接过程讨论线性表的应用.假设有两个表A和B,分别是m1行.n1列和m2行.n2列,它们简单自然连接结果C=A*B(i==j),其中i表示表A中列号,j表示表B中的列号,C为A和B的笛卡儿积中满足指定连接条件的所有记录组,该连接条件为表A的第i列与表B的第j列相等. 如:         1 2 3                3 5 A  =  2 3 3         B =  1 6       

数据结构学习笔记——线性表

第2章  线性表 2.1  线性表的类型定义  线性结构的特点是:在数据元素的非空有限集中,(1)存在唯一的一个被称做“第一个”的数据元素:(2)存在唯一的一个被称做“最后一个”的数据元素:(3)除第一个之外,集合中的每个数据元素只有一个前驱:(4)除最后一个外,集合中每个数据元素均只有一个后继. 线性表的类型定义 线性表(linear_list)是最常用的且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成.在这种情况下

python数据结构之一:线性表

线性表:零个或多个数据元素的有限序列. 咋一看这句话,我也不明白是什么意思,哈哈,举例说明一下吧.去电影院买票时,人们的排队就是一个线性表,有固定的最前一个,固定的最后一个. 张三是其中一个,他的前一个人,和后一个人是确定的单一的. 再如,一个公司里的一个部里有一个领导,多名员工,他们的关系就不是线性表了,有一对多的关系. 那么在python里如何创建线性表呢?如下: L1=["a","b","c","d","e&q

数据结构与算法之线性表

前言 上一篇<数据结构和算法之时间复杂度和空间复杂度>中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行了一一说明.这一篇主要介绍线性表. 线性表属于数据结构中逻辑结构中的线性结构.回忆一下,数据结构分为物理结构和逻辑结构,逻辑结构分为线性结构.几何结构.树形结构和图形结构四大结构.其中,线性表就属于线性结构.剩余的三大逻辑结构今后会一一介绍. 线性表 基本概念 线性表(List):由零个或多个数据元素组成的有限序列. 注意: 1.线性表是一个序列. 2.0个元素构成的线性表是空表.

【算法与数据结构实战】线性表操作-实现A并B,结果放入A中

//数据结构与算法基础题1:线性表操作,实现A并B,结果放入A中 #include "stdafx.h" #include <iostream> #include <string> #include <vector> #include <algorithm> #pragma warning(disable:4996) using namespace std; int main() { vector<int> set_A, se

python web为什么要学数据结构与算法面试官为什么总问那几个算法和线性表二叉树

算法是什么? 举个简单的例子 当年刘景生病危刘琦被卷入继位之事 无奈求助于诸葛亮 以上古兵书为由 邀孔明阁楼相谈.... 诸葛亮曾说 那部阵书开篇就是阵法源自于心法 所以古代军师进步也是看兵法 算法也是同理 虽然我们作为web后端开发人员 但是每天所见所闻日子久也就适应了. 但是想要再进一步 两种方法 一 多看高质量代码 二 看算法 我们作为web开发可能算法运用的不是很多 每天也就是写接口调接口和产品经理撕 但是算法最重要的地方是会帮你扩充你的逻辑思维 可能刚看算法的人认为太难了我真学不来 举

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

一.数据结构 1.概念 1.数据类型和抽象数据类型是不同的概念. 2.逻辑结构分为线性结构(一对一).树形结构(一对多).图形结构(多对多). 3.时间复杂度(T(n)=O(f(n)):空间复杂度(占用的内存空间). 4.算法 1.BF算法:时间复杂度最坏为O(n*m). 2.kmp算法:时间复杂度最坏为O(n+m). 二.线性表 1.概念 1.顺序表结点的存储地址计算公式:Loc(ai)=Loc(a1)+(i-1)*C. 2.操作主要是查找用顺序表,进行插入.删除操作的适合用链表. 3.存储密