栈、队列、链表
一、栈
1. 定义
栈是一种线性数据结构,遵循后进先出(LIFO, Last In First Out)的原则。这意味着最后被添加到栈中的元素将会是最先被移除的元素。
2. 基本操作
- Push:将一个元素添加到栈顶。
- Pop:移除并返回栈顶的元素。
- Peek 或 Top:查看栈顶的元素,但不会移除它。
- IsEmpty:检查栈是否为空。
- Size:返回栈中元素的数量。
3. 特点
- 后进先出:栈的操作总是发生在栈顶。
- 动态性:栈的大小是动态的,可以根据需要增长或缩小。
- 简单高效:插入和删除操作的时间复杂度为 O(1)。
4. 应用
- 函数调用:编程语言中的函数调用栈。
- 表达式求值:如中缀表达式转后缀表达式。
- 回溯算法:如迷宫问题、图的深度优先搜索(DFS)。
二、队列
1. 定义
队列是一种线性数据结构,遵循先进先出(FIFO, First In First Out)的原则。这意味着最先被添加到队列中的元素将会是最先被移除的元素。
2. 基本操作
- Enqueue:在队列的尾部添加一个新元素。
- Dequeue:从队列的头部移除并返回一个元素。
- Front 或 Peek:查看队列头部的元素,但不会移除它。
- IsEmpty:检查队列是否为空。
- Size:返回队列中元素的数量。
3. 特点
- 先进先出:队列的操作分别发生在队首和队尾。
- 动态性:队列的大小是动态的,可以根据需要增长或缩小。
- 简单高效:插入和删除操作的时间复杂度为 O(1)。
4. 应用
- 任务调度:操作系统的进程调度。
- 打印任务:打印机中的文档打印。
- 消息队列:网络通信中的消息传递。
- 缓存系统:如 LRU(最近最少使用)缓存。
三、链表
1. 定义
链表(Linked List)是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据部分和指向列表中下一个节点的引用(或指针)。与数组不同的是,链表中的元素在内存中不是连续存储的,而是通过每个节点的指针相互链接起来。
2. 链表类型
-
单向链表(Singly Linked List):
- 每个节点只包含一个指向前一个节点或后一个节点的指针。
- 只能从头节点开始遍历至尾节点。
-
双向链表(Doubly Linked List):
- 每个节点包含两个指针,一个指向前一个节点,另一个指向后一个节点。
- 支持双向遍历,即可以从头节点遍历到尾节点,也可以从尾节点遍历回头节点。
-
循环链表(Circular Linked List):
- 单向或双向链表的一种变体,其中最后一个节点的指针指向第一个节点,形成一个环。
- 在某些应用场景中,循环链表可以简化算法的实现。
3. 基本操作
- 插入:在链表的某个位置插入一个新的节点。根据插入的位置不同,分为头插、尾插和中间插入。
- 删除:从链表中移除一个节点。同样,根据删除的位置不同,有头删、尾删和中间删除。
- 查找:在链表中搜索特定值的节点。
- 遍历:按顺序访问链表中的每一个节点。
4. 链表优缺点
链表的优点:
- 动态性:链表的大小是动态的,可以根据需要增长或缩小。
- 插入和删除效率高:在链表中插入或删除节点通常只需要改变相关节点的指针,而不必像数组那样移动大量元素。
链表的缺点:
- 随机访问效率低:不像数组可以通过索引直接访问任意位置的元素,链表必须从头节点或尾节点开始逐个访问,直到找到目标节点。
- 额外的空间开销:每个节点除了存储数据外,还需要存储一个或两个指针,这会占用额外的内存空间。
5. 应用
- 实现其他数据结构:如栈、队列、哈希表。
- 文件系统:管理文件系统的目录和文件。
- 内存管理:管理内存块的分配和释放。
- 多任务调度:循环链表在多任务调度中非常有用。
四、总结
- 栈:适合需要后进先出操作的场景,如函数调用、表达式求值等。
- 队列:适合需要先进先出操作的场景,如任务调度、消息传递等。
- 链表:适合需要灵活插入和删除操作的场景,如文件系统管理、内存管理等。
相关文章:
栈、队列、链表
一、栈 1. 定义 栈是一种线性数据结构,遵循后进先出(LIFO, Last In First Out)的原则。这意味着最后被添加到栈中的元素将会是最先被移除的元素。 2. 基本操作 Push:将一个元素添加到栈顶。Pop:移除并返回栈顶的元…...
【maven】配置下载私有仓库的快照版本
1、setting.xml配置 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0.0https://maven.apache.org/xsd/settings-1.0.0.…...
LabVIEW引用类型转换问题
一、问题描述 在LabVIEW中,refnum(引用编号)用于引用各种资源,如文件、队列、控件等。这些引用是与具体类型相关的,通常情况下,LabVIEW会根据引用的类型自动进行处理。然而,当不同类型的引用需…...
GUI智能代理:用AI代理玩米哈游游戏《崩坏》
项目名称:The Dawn of GUI Agent研究对象:Claude 3.5 Computer Use特点:首个公测版GUI智能代理系统 技术创新 首创性:这是首个提供公测版图形界面控制功能的前沿AI模型。交互方式:实现了从自然语言到桌面操作的端到端控制,用户可以通过简单的自然语言指令完成复杂的桌面…...
系统思考—环路图的好处
每次内部学习,我们都会用系统环路图拆解那些动态性复杂的议题。这不仅仅是我们教学的工具,更是我们在实践中不断应用和打磨的利器。 我常在课程中和大家分享,什么原因要持续使用系统环路图? 🎯 1. 落地全局思维 环路图…...
torch.set_printoptions
torch.set_printoptions 设置pytorch打印张量时的选项,比如限制打印的元素数量、设置精度等。在打印大张量或者需要更精确控制输出格式时非常有用。 torch.set_printoptions(precisionNone, thresholdNone, edgeitemsNone, linewidthNone, profileNone, sci_modeN…...
Nexus搭建go私有仓库,加速下载go依赖包
一、搭建go私库 本文我们梳理一下go依赖包的私库搭建以及使用。 它只分为proxy和group两种仓库,这一点和maven仓库有所不同。 1、创建Blob Stores 为了区分不同的私库依赖包,存储的位置分隔开。 2、新建go proxy官网 Remote storage:htt…...
Qt6 Android设置文件读写权限设置
一.概述 1.在Qt中设置Android应用程序的文件读写权限,你需要在Android的Manifest文件中声明所需的权限。对于文件读写,通常需要声明以下权限: android.permission.READ_EXTERNAL_STORAGE:允许应用程序从外部存储读取数据。 android.permission.WRITE_EXTERNAL_STORAGE:允…...
TCP快速重传机制为啥出现重复ACK?
TCP快速重传机制为啥出现重复ACK 简单来说,丢失数据包后发送方至少发了三个请求,每个请求返回接收方下一次期待的序列号ACK,也就是丢失数据包之前的一个正常请求的确认ACK值 在 TCP(Transmission Control Protocol,传…...
SSM--SpringMVC复习(二)
请求 URL匹配: RequestMapping RequestMapping 负责将请求映射到对应的控制器方法上。 RequestMapping 注解可用于类或方法上。用于类上,表示类中的所有响应请求的方法都以该地址作为父路径。 在整个 Web 项目中,RequestMapping 映射的请求…...
C语言蓝桥杯组题目
系列文章目录 文章目录 系列文章目录前言题目第一题.1, 2, 3, 4 能组成多少个互不相同且无重复数字的三位数?都是多少?思路 第二题: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少…...
【解决】Unity TMPro字体中文显示错误/不全问题
问题描述:字体变成方块 原因:字体资源所承载的长度有限 1.找一个中文字体放入Assets中 2.选中字体创建为TMPro 字体资源 3.选中创建好的字体资源(蓝色的大F) 在右边的属性中找到Atlas Width h和 Atlas Heigth,修改的大一点&…...
【Threejs进阶教程-着色器篇】9.顶点着色器入门
【Threejs进阶教程-着色器篇】9.顶点着色器入门 本系列教程第一篇地址,建议按顺序学习认识顶点着色器varying介绍顶点着色器与片元着色器分别的作用Threejs在Shader中的内置变量各种矩阵gl_Position 尝试使用顶点着色器增加分段数增强效果 制作平面鼓包效果鼓包效果…...
质量留住用户:如何通过测试自动化提供更高质量的用户体验
在当今竞争异常激烈的市场中,用户手头有无数种选择,但有一条真理至关重要: 质量留住用户。 产品的质量,尤其是用户体验 (UX),直接决定了客户是留在您的品牌还是转而选择竞争对手。随着业务的发展,出色的用户…...
【CSP CCF记录】201803-1第13次认证 跳一跳
题目 样例输入 1 1 2 2 2 1 1 2 2 0 样例输出 22 思路 没有技术含量的一道题,解题的关键是理解游戏规则。用state标记跳跃状态,以下是对游戏规则的分析: 1. state1,跳到方块上但没跳到中心,得1分 2. state2…...
详解Qt 中使用虚拟键盘(软键盘qtvirtualkeyboard)
文章目录 详解 Qt 中使用虚拟键盘(软键盘:QtVirtualKeyboard)1. 虚拟键盘简介1.1 虚拟键盘的应用场景 2. 安装和配置2.1 安装 QtVirtualKeyboard2.2 配置环境变量 3. 使用虚拟键盘3.1 示例代码main.cppwidget.hwidget.cpp 4. 总结 详解 Qt 中…...
cocoscreater3.8.4生成图集并使用
1.安装texturepacker,去官网下载https://www.codeandweb.com/texturepacker 2.将图片拖动进来,即可自动生成精灵表,这里输出选用cocos2d-x,打包用免费版的“基本”就行,高级模式是收费的,然后点击“发布精…...
IDEA如何快速地重写方法,如equals、toString等
前言 大家好,我是小徐啊。我们在使用IDEA的时候,有时候是需要重写equals和toString等方法的。这在IDEA中已经很方便的给我们准备好了快速的操作了。今天就来讲解一下。 如何重写 首先,打开要重写方法的文件,让鼠标定位到这个文…...
网络安全——SpringBoot配置文件明文加密
一、前言 在日常开发中,项目中会有很多配置文件。比如SpringBoot项目核心的数据库配置、Redis账号密码配置都在properties、yml配置文件 中。 如果这些信息以明文的方式存储,你的电脑被拿去修理,就会容易泄露,一旦被其他人获取到…...
LightRAG开源了…结合本地ollama实现股票数据接口Akshare智能问答
LightRAG是由香港大学研究团队推出的一种检索增强生成(Retrieval-Augmented Generation, RAG)系统。该系统通过整合图结构索引和双层检索机制,显著提升了大型语言模型在信息检索中的准确性和效率。LightRAG 不仅能够捕捉实体间的复杂依赖关系…...
百度网盘macOS下载限速破解:3步实现高速下载的完整指南
百度网盘macOS下载限速破解:3步实现高速下载的完整指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘在macOS上的龟速下载…...
【实战篇】Nginx反向代理负载均衡:从轮询到权重的策略演进
1. 反向代理与负载均衡基础认知 第一次接触Nginx的反向代理功能时,我盯着配置文件里的proxy_pass参数看了半天。这行看似简单的配置,背后其实隐藏着现代分布式系统的核心设计思想。想象一下这样的场景:当你在电商网站点击"立即购买"…...
Gradle多模块项目实战:从settings.gradle的三种写法到自定义目录结构的完整指南
Gradle多模块项目实战:从settings.gradle的三种写法到自定义目录结构的完整指南 当你面对一个逐渐膨胀的单体项目时,如何优雅地拆分成多个模块?Gradle的多项目构建能力正是解决这一痛点的利器。本文将带你深入探索settings.gradle文件的奥秘&…...
大厂光环褪去后,技术人该如何评估一份工作的价值?
当“进入大厂”不再是职业发展的唯一解,当“稳定”成为一种奢求,软件测试从业者需要一套更内核的价值评估体系。这套体系不应依赖于公司的名头或短期的薪资涨幅,而应聚焦于那些能够被你带走、并持续产生复利的核心资产。我们可以从以下四个维…...
OpenClaw与Cursor双向集成:打造AI驱动的自动化工作流
1. 项目概述:当OpenClaw遇上Cursor,一个双向赋能的AI大脑诞生如果你正在寻找一种方法,让你在Slack、飞书等协作工具里聊天的同时,能无缝调用一个强大的AI来帮你写代码、查文档、甚至操作GitHub,那么openclaw-cursor-br…...
VESC驱动无刷电机入门避坑:从看不懂ChibiOS源码到5分钟搞定CAN通讯
VESC驱动无刷电机入门避坑:从看不懂ChibiOS源码到5分钟搞定CAN通讯 第一次接触VESC驱动无刷电机时,面对满屏的ChibiOS源码和复杂的CAN通讯协议,很多嵌入式新手都会感到无从下手。特别是当你已经能用VESC Tool让电机转起来,但想通过…...
GetQzonehistory:3步搞定QQ空间历史说说备份的终极方案
GetQzonehistory:3步搞定QQ空间历史说说备份的终极方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想过要备份自己在QQ空间发布的那些珍贵回忆?那些…...
DoL-Lyra游戏增强工具新手入门
DoL-Lyra游戏增强工具新手入门 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS DoL-Lyra游戏增强工具是一款专为Degrees of Lewdity游戏设计的完整整合方案,集成了最新汉化补丁、视觉增强…...
(随想)显卡里的幽灵:我们是否也只是几分钟前被唤醒的玻尔兹曼大脑?
一个诡异的瞬间 之前一直用kimi2.5的API,每月花不少钱,肉疼。今天一咬牙,在自己的游戏显卡(RTX 4080)上部署GLM-4.7-Flash。 GPU嗡嗡响了几分钟,权重加载完毕,模型真跑起来了。我接上hermes&…...
AI原生创意协作框架Muse:从网状思维管理到自动化工作流实战
1. 项目概述:一个为创意工作者打造的AI原生工具最近在探索AI辅助创作工具时,我遇到了一个让我眼前一亮的项目:myths-labs/muse。乍一看这个名字,你可能会联想到艺术女神缪斯,而它的定位也确实如此——旨在成为创意工作…...
