线性数据结构

1.数组

数组使用一块连续的内存来存储元素,并且元素的类型都是相同的。可以通过索引来访问。

2.链表

链表由一系列节点组成,每个节点包含两部分:数据部分和指针部分。数据部分用于存储元素的值,指针部分则指向下一个节点。没有使用连续的内存空间来存储数据。

在知道目标位置元素的上一个元素的时候,链表的插入和删除操作的复杂度为 O(1) 。但是,在查找一个节点或者访问特定位置的节点的时候复杂度为 O(n) 。

常见链表有:单链表、双向链表、循环链表、双向循环链表

单链表

单链表只有一个方向,结点只有一个后继指针 next 指向后面的节点。因此,链表这种数据结构通常在物理内存上是不连续的。我们习惯性地把第一个结点叫作头结点,链表通常有一个不保存任何值的 head 节点,通过头结点我们可以遍历整个链表。尾结点通常指向 null。

循环链表

循环链表其实是一种特殊的单链表,和单链表不同的是循环链表的尾结点不是指向 null,而是指向链表的头结点。

双向链表

双向链表包含两个指针,一个 prev 指向前一个节点,一个 next 指向后一个节点。

双向循环链表

双向循环链表最后一个节点的 next 指向 head,而 head 的 prev 指向最后一个节点,构成一个环。

3.栈

栈 (Stack) 只允许在有序的线性数据集合的一端(称为栈顶 top)进行元素的添加(push)和删除(pop)。因而按照后进先出(LIFO,Last In First Out)的原理运作。在栈中,push 和 pop 的操作都发生在栈顶。

栈常用一维数组或链表来实现,用数组实现的栈叫作 顺序栈 ,用链表实现的栈叫作 链式栈

4.队列

队列是先进先出 (FIFO,First In, First Out) 的线性表。在具体应用中通常用链表或者数组来实现,用数组实现的队列叫作顺序队列 ,用链表实现的队列叫作链式队列。队列只允许在队尾进行插入操作,在队首进行出队。

单队列

单队列就是常见的队列, 每次添加元素时,都是添加到队尾。单队列又分为顺序队列(数组实现)和链式队列(链表实现)。

循环队列

循环队列在逻辑上是一个循环的队列,可以利用数组实现。循环队列解决了普通队列在出队操作时导致的队列空间浪费的问题。

双端队列

双端队列是一种在队列的两端都可以进行插入和删除操作的队列,相比单队列来说更加灵活。

优先队列

优先队列从底层结构上来讲并非线性的数据结构,它一般是由堆来实现的。在入队和出队时有以下特点。

  • 在每个元素入队时,优先队列会将新元素插入堆中并调整堆。

  • 在队头出队时,优先队列会返回堆顶元素并调整堆。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586463.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向C++程序员的Rust教程(二)

先序文章请看: 面向C程序员的Rust教程(一) 所有权与移动语义 要说Rust语言跟其他语言最大的区别,那笔者觉得非数这个所有权和移动语义莫属。 深浅复制 对于绝大多数语言来说,变量/对象之间的赋值通常都是复制语义。…

算法-小记

Integer,Long,BigInteger字符转化 在 Java 中: 如果字符串超过 333333 位,不能转化为 Integer 如果字符串超过 656565 位,不能转化为 Long 如果字符串超过 500000001位,不能转化为 BigInteger 牛顿迭代…

EXCEL通过VBA字典快速分类求和

EXCEL通过VBA字典快速分类求和 汇总截图 Option ExplicitOption Explicit Sub answer3() Dim wb As Workbook Dim sht As Worksheet Set wb ThisWorkbook Set sht wb.Worksheets(2) Dim ss1 As Integer Dim ss2 As Integer Dim i As Integer Dim j As Integer j 1Dim aa()…

安卓系统框架和Framework概述

目录 一、安卓系统框架1.1 系统应用层1.2 Java 框架层1.3 Native C/C系统库和 Android Runtime1.4 硬件抽象层(HAL)1.5 Linux Kernel 内核层 二、Framework2.1 关于Framework层:2.2 Android Framework的三大核心功能2.3 多语言编写的好处 一、安卓系统框架 图为 Google 官方提…

基于DCT(离散余弦变换)的图像水印算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

红杉资本:2024年关于AI的4大预测

四大预测 预测一:Copilot 将逐渐向 AI Agent 转变。 2024 年,AI 将从辅助人类的 Copilot 转变为真正能替代一些人类工作的Agent。AI 将更像是一个同事,而不仅仅是一个工具,这点在软件工程、客服等行业已经初步显现。 预测二&…

AI音乐创作生成翻唱h5公众号流量主小程序开发

AI音乐创作生成翻唱h5公众号流量主小程序开发 五音不全? Ai音乐小程序系统让你秒变音乐家 分享赚钱 分享小程序给好友充值使用即可或分佣 Ai音乐素材 媒体配乐的绝佳利器 生成步骤 输入灵感/歌词 可手动输入&AI自动输入 ↓ 输入歌名 可手动输入&AI自动输入 ↓ 选择…

基于python爬虫与数据分析系统设计

**单片机设计介绍,基于python爬虫与数据分析系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于Python爬虫与数据分析系统的设计是一个结合了网络数据抓取、清洗、存储和数据分析的综合项目。这样的系统通常…

【智能算法】蜣螂优化算法(DBO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年,Xue等人受到自然界中蜣螂生存行为启发,提出了蜣螂优化算法(Dung beetle optimizer, DBO)。 2.算法原理 2.1算法思想 DBO模拟了自然界蜣螂种…

Maplesoft Maple 2024(数学科学计算)mac/win

Maplesoft Maple是一款强大的数学计算软件,提供了丰富的功能和工具,用于数学建模、符号计算、数据可视化等领域的数学分析和解决方案。 Mac版软件下载:Maplesoft Maple 2024 for mac激活版 WIn版软件下载:Maplesoft Maple 2024特别…

【SpringBoot整合系列】SpirngBoot整合EasyExcel

目录 背景需求发展 EasyExcel官网介绍优势常用注解 SpringBoot整合EaxyExcel1.引入依赖2.实体类定义实体类代码示例注解解释 3.自定义转换器转换器代码示例涉及的枚举类型 4.Excel工具类5.简单导出接口SQL 6.简单导入接口SQL 7.复杂的导出(合并行、合并列&#xff0…

Linux利用Jenkins部署SpringBoot项目保姆级教程

在当今快速发展的软件开发领域,持续集成和持续部署(CI/CD)已经成为提升开发效率、缩短产品上市时间的关键实践。Linux系统以其稳定性和开源友好性,成为众多开发者和企业的首选平台。而Spring Boot,作为一个轻量级的Jav…