数据结构-01线性结构

(CSDN数据结构基础系列课程截图)

数组

数组是可以在内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。

优点:

1、按照索引查询元素速度快

2、按照索引遍历数组方便

缺点:

1、构建时必须分配一段连续的空间,且数组的大小固定后就无法扩容了

2、查询数组是否存在需要遍历整个数组,添加,删除的操作同样,均需耗费O(n)的时间

3、数组只能存储一种类型的数据

适用场景:

频繁查询,对存储空间要求不大,很少增加和删除的情况。


链表

链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。

分类:

单链表:链表中的每一个元素实际上是一个单独的对象,而所有的对象都通过每个元素中的引用字段链接在一起。

双链表:与单链表不同,双链表的每个结点中都含有两个引用字段。

优点:

1、灵活地分配内存空间

2、能在O(1)时间内删除或者添加元素

缺点:

查询元素需要O(n)时间

(不能向数组那样  通过下标迅速读取元素

每次都要从头开始查询)

适用场景:

如果数据元素不确定  经常进行数据的添加和删除  比较适合链表


操作受限制的线性表/数组,只能从尾部插入/删除,后进先出

算法基本思想:

可以用一个单链表来实现

只关心上一次操作

处理完上一次操作后,能在O(1)时间内查找到更前一次操作


队列

操作受限制的线性表/数组,只能从尾部插入,头部删除,先进先出
 
常用场景:广度优先搜索
 
双端队列:两端均可插入或删除    1.使用双端队列  2.使用循环数组    常用场景:实现一个长度动态变化的窗口或者连续区间
 
单调队列:队列内元素大小单调
 
优先队列(堆):优先级高的队列先出队
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值