数据结构与算法知识整理

什么是数据结构

程序设计=数据结构+算法

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等。

逻辑结构

指数据对象中数据元素之间的相互关系

四大逻辑结构

集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他不三不四的关系

线性结构:线性结构中的数据元素之间是一对以的关系

树形结构:树形结构中的数据元素之间存在一种一对多的层次关系

图形结构:图形结构的数据元素是多对多的关系

物理结构

是指数据的逻辑结构在计算机中的存储形式

存储器:内存

数据元素的存储结构

顺序存储结构:

是把数据元素存方在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的

链式存储结构:

是吧数据元素存放在任意的存储单元里,这组存储单元可以是连续的也可以是不连续的,

需要一个指针存放数据元素的地址

数组
在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。


只能在某一端插入或者删除的特殊线性表,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶
需要数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)

队列
一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而表的后端(rear)进行插入操作,
进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或后进后出”的原则组织数据
队列没有元素的时候,称为空队列

链表
是一种物理存储单元上非连续,非顺序的存储结构,它既可以表示线性结构,也可以表示非线性结构
数据元素的逻辑顺序是通过链表中的指针次序实现的,
链表由一系类结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成
每个结点包括俩个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域

树(n结点、K有穷集、关系N、KO跟结点)

是包含n(n>0)个结点的有穷集合K,且K中定义了一个关系N,

N满足以下条件
1、有且仅有一个结点KO,它对于关系N来说没有前驱,称KO为树的根结点。简称为根(root)
2、除KO外,K中的每个结点,对于关系N来说只有一个前驱
3、K中各结点,对于关系N来说可以有m个后续(m>=0)

图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中结点称为顶点,
边是顶点的有序偶对,若俩个顶点之间存在一条边,就表示这俩个顶点具有相邻关系



在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。
堆的特点是根节点的值最小(或最大),且根结点的俩个子树也是一个堆

散列表
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。
称这个对应关系f为散列函数(hash function),按这个思想建立表为散列表


红黑树(Red Black Tree)(自平衡二叉树)

1、节点是红色或黑色。
2、根节点是黑色。
3、每个叶节点(NIL节点,空节点)是黑色的。
4、每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。


JSON
(JavaScript Object Notation) 轻量级数据交换格式能够替代XML的工作
eval()
有规则的字符串,(表现形式)是键值对
用于交互(Web项目后端交互、接口、配置文件、文件存储等)

于XML的对比

可读性(差不多)
可扩展性(JSON可以存储Javascript符合对象)
像Java就有Jackson、goson、json-lib、FastJson等等多的去了。
XML有有DOM,SAX,STAX等解析技术,JSON也有我上面说的那些
编码解码

数据格式比较简单,

易于读写, 格式都是压缩的, 占用带宽小,易于解析这种语言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值