数据结构与算法 基础数据结构(二)

1.数组

  • 描述: 数组是一种基本的数据结构,用于存储元素的有序集合。它在内存中分配一段连续的空间来存储元素。
  • 特点:
    • 固定大小:一旦创建,大小通常不变。
    • 索引访问:可以通过索引直接访问任何位置的元素,提供 O(1) 时间复杂度的访问。
    • 内存效率:由于连续的内存空间,数组在空间上很高效。

2.链表

  • 单链表(Singly LinkedList)

    • 描述: 每个元素(节点)包含数据和指向下一个节点的指针。
    • 特点:
      • 动态大小:可以根据需要增长或缩小。
      • 顺序访问:必须从头节点开始逐个访问元素,访问时间为 O(n)。
      • 插入和删除效率高,不需要移动其他元素。
  • 双链表(Doubly LinkedList)

    • 描述: 类似于单链表,但每个节点有两个指针,分别指向前一个和后一个节点。
    • 特点:
      • 可以向前或向后遍历。
      • 删除和插入(尤其是在列表中间)更高效,因为不需要从头遍历。
  • 循环链表(Circular LinkedList)

    • 描述: 链表的一种变体,其中最后一个节点指向头节点,形成一个圈。
    • 特点:
      • 从任何节点开始都可以遍历整个列表。
      • 适用于需要循环访问元素的场景。

3.栈

  • 描述: 栈是一种遵循后进先出(LIFO)原则的集合。只能在栈顶添加或移除元素。
  • 操作:
    • push:在栈顶添加元素。
    • pop:移除栈顶元素。
    • peektop:查看栈顶元素但不移除。
  • 用途: 在函数调用、表达式求值、回溯算法中广泛使用。

 

4.队列

  • 普通队列(Regular Queue)

    • 描述: 队列是一种遵循先进先出(FIFO)原则的集合。元素从后端(rear)添加,从前端(front)移除。
    • 用途: 适用于需要按顺序处理元素的场景,如打印任务、操作系统的任务调度。
  • 循环队列(Circular Queue)

    • 描述: 队列的一种实现,其中数组的末尾“连接”到开头,形成一个圆环。
    • 特点: 有效解决普通队列中空间利用不均的问题。
  • 优先队列(Priority Queue)

    • 描述: 类似于普通队列,但每个元素都有一个优先级。元素按优先级顺序移除。
    • 实现: 通常用堆(特别是二叉堆)实现。
    • 用途: 在需要处理具有优先级的数据(如任务调度、Dijkstra的最短路径算法)时非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值