常用数据结构

最常用的数据结构:
1.数组
2. 堆栈
3. 队列
4. 链表
5.树
5. 图

1.数组
数组(Array)大概是最简单,也是最常用的数据结构了。其他数据结构,比如栈和队列都是由数组衍生出来的。
每一个数组元素的位置由数字编号,称为下标或者索引(index)。大多数编程语言的数组第一个元素的下标是 0。
根据维度区分,有 2 种不同的数组:
一维数组
多维数组(数组的元素为数组)
数组的基本操作:
Insert - 在某个索引处插入元素
Get - 读取某个索引处的元素
Delete - 删除某个索引处的元素
Size - 获取数组的长度
2. 栈
栈中的元素采用 LIFO (Last In First Out),即后进先出。
栈的基本操作:
Push —  在栈的最上方插入元素
Pop — 返回栈最上方的元素,并将其删除
isEmpty —  查询栈是否为空
Top —  返回栈最上方的元素,并不删除

3.队列
队列(Queue)与栈类似,都是采用线性结构存储数据。它们的区别在于,栈采用 LIFO 方式,而队列采用先进先出,即FIFO(First in First Out)。

队列的基本操作:
Enqueue —  在队列末尾插入元素
Dequeue —  将队列第一个元素删除
isEmpty —  查询队列是否为空
Top —  返回队列的第一个元素

4.链表
链表(Linked List)也是线性结构,它与数组看起来非常像,但是它们的内存分配方式、内部结构和插入删除操作方式都不一样。
链表是一系列节点组成的链,每一个节点保存了数据以及指向下一个节点的指针。链表头指针指向第一个节点,如果链表为空,则头指针为空或者为 null。

链表可以用来实现文件系统、哈希表和邻接表。
链表分为 2 种:
单向链表
双向链表
链表的基本操作:
InsertAtEnd —  在链表结尾插入元素
InsertAtHead —  在链表开头插入元素
Delete —  删除链表的指定元素
DeleteAtHead —  删除链表第一个元素
Search —  在链表中查询指定元素
isEmpty —  查询链表是否为空

5. 图
图(graph)由多个节点(vertex)构成,节点之间阔以互相连接组成一个网络。(x, y)表示一条边(edge),
它表示节点 x 与 y 相连。边可能会有权值(weight/cost)。

图分为两种:
无向图
有向图
在编程语言中,图有可能有以下两种形式表示:
邻接矩阵(Adjacency Matrix)
邻接表(Adjacency List)
遍历图有两种算法:
广度优先搜索(Breadth First Search)
深度优先搜索(Depth First Search)

6.树与二叉树
树是由n(n>=1)个有限节点组成一个具有层次关系的集合。它具有以下特点:每个节点有零个或多个子节点;没有父节点的节点称为 根 节点;每一个非根节点有且只有一个 父节点 ;除了根节点外,每个子节点可以分为多个不相交的子树。
二叉树基本概念:二叉树是每个节点最多有两棵子树的树结构。通常子树被称作“左子树”和“右子树”。二叉树常被用于实现二叉查找树和二叉堆。
三种遍历方法:
在二叉树的一些应用中,常常要求在树中查找具有某种特征的节点,或者对树中全部节点进行某种处理,这就涉及到二叉树的遍历。二叉树主要是由3个基本单元组成,根节点、左子树和右子树。如果限定先左后右,那么根据这三个部分遍历的顺序不同,可以分为先序遍历、中序遍历和后续遍历三种。
(1) 先序遍历 若二叉树为空,则空操作,否则先访问根节点,再先序遍历左子树,最后先序遍历右子树。
(2) 中序遍历 若二叉树为空,则空操作,否则先中序遍历左子树,再访问根节点,最后中序遍历右子树。
后序遍历 若二叉树为空,则空操作,否则先后序遍历左子树访问根节点,再后序遍历右子树,最后访问根节点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值