数据结构——四种最常见的线性表

数据之间常见的逻辑结构包括线性结构、关联结构(集合、映射)、树形结构、图形结构.
线性表是数据结构中最简单的基本数据结构.
数组、链表、栈、队列是四种最常见的线性表.

1.数组
对数组的基本操作有查找、插入、删除. 数组元素的直接访问几乎没有开销,但是插入和删除操作需要移动数组元素,开销比较大,因此在插入和删除操作比较频繁的场合下,不适合用数组.
在数组中查找一个元素的时间复杂度为O(n) 如果数组元素是有序存储的,则使用二分查找可以将时间复杂度降到O(lgn)

例子:有若干个数存放在value数组中,这些数的取值范围是[1-100],请设计一个算法统计一下这些数中相同的数出现的次数.
解析:虽然value中数字的个数很多,但是范围并不大,所以可以设计一个有100个元素的数组,数组元素的下标对应数字,数组元素的值就是对应数字出现的次数. 虽然哪些没有出现过的数字也需要占用数组中的一个位置,但是这点空间开销是可以接受的.

2.链表
链表结构的每个节点数据都由两个域组成,一个是存放实际数据元素的数据域,另一个就是构成链式结构的指针域.
单向链表:指针域只有一个后向指针
双向链表:指针域由一个后向指针和一个前向指针组成
链表访问数据元素的效率比较低,需要从链表头部向后搜索,查找操作的时间复杂度为O(n).
在某些应用场合,可以将链表尾部节点的后向指针指向链表头部节点,构成一个环形链表
对环形链表来说,无论从哪个节点开始都可以遍历整个链表
表头节点的作用域中放置一些与链表有关的状态信息. 比如当前链中的数据元素节点个数。表头结点的指针域始终指向第一个实际链表节点,如果表头节点的指针域是null,则表示这个链表是空表.
使用表头节点的好处:
1.无论链表是否为空表,始终有一个能表示链表的头结点
2.对链表进行插入、删除、遍历操作时,不需要对数据元素的首节点和中间节点做差异处理

3.栈
站的数据存储方式可以采用数组或链表.分别被称为”顺序栈”和”链式栈”. 利用栈的一些特性,可以将某算法的递归实现转换成非递归实现. 有时,广度优先搜索和深度优先搜索的差异仅仅是使用栈还是使用队列.
判断表达式的括号是否匹配算法,可以使用栈这种数据结构

4.队列
队列和栈一样,都不是数据存储方式,而是一种逻辑管理方式.
队列的数据存储方式可以采用数组,也可以使用链表
队列有多种形式:环形队列、双端队列、优先级队列.
队列在算法中的应用:图的广度优先搜索算法、操作系统中的线程调度算法、管理数据报文的发送和接收

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值