当前位置: 首页 > news >正文

数据结构(二) 线性表

一. 线性表

        1.定义

                线性表是由n(n>=0)个具有相同数据类型的数据元素构成的有限序列。其中,元素之间通过顺序关系排列,每个元素有且只有一个直接前驱和一个直接后继(除首尾元素外)

二.线性表的顺序表示(顺序表)

        1.存储方式

                使用连续的内存空间(数组)存储元素,逻辑相邻的元素在物理位置上也相邻

        2.特点

                优点:支持随机访问,时间复杂度为O(1)

                缺点:进行插入/删除操作时,需要移动元素,平均时间复杂度为O(n)

        3.动态扩容

                当数组空间不足时,可以重新分配更大的空间,并复制数据

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>#define MAXSIZE 100  // 顺序表初始最大容量// 顺序表结构体定义
typedef struct SeqList{int *data;       // 指向动态分配数组的指针int length;      // 当前表长(有效元素个数)int capacity;    // 当前分配的存储容量
}SeqList;/* 初始化顺序表* 参数:L - 指向顺序表结构的指针* 流程:* 1. 申请MAXSIZE大小的连续内存空间* 2. 初始化长度为0* 3. 设置当前容量为MAXSIZE*/
void InitList(SeqList *L){L->data = (int *)malloc(sizeof(int) * MAXSIZE);  // 分配初始内存L->length = 0;               // 初始空表L->capacity = MAXSIZE;       // 记录最大容量
}/* 插入元素函数* 参数:L - 顺序表指针,index - 插入位置(从1开始),value - 插入值* 返回值:bool - 是否插入成功* 流程:* 1. 位置有效性检查(1<=index<=length+1)* 2. 空间不足时自动扩容(2倍扩容策略)* 3. 元素后移操作(从最后一个元素开始到目标位置)* 4. 插入新元素并更新表长*/
bool InsertList(SeqList *L, int index, int value){// 位置合法性校验(包括空表情况下的校验)if(index < 1 || index > L->length + 1){return false;  // 插入位置非法}// 空间扩容机制(当表满时自动扩容)if(L->length >= L->capacity){// 尝试扩容为当前容量的2倍int *NewData = (int *)realloc(L->data, sizeof(int) * L->capacity * 2);if(!NewData){  // 内存分配失败return false;} L->data = NewData;     // 更新数据指针L->capacity *= 2;      // 更新容量记录}// 元素后移操作(从后往前移动防止覆盖)for(int i = L->length; i >= index; i--){L->data[i] = L->data[i-1];  // 将index-1位置后的元素依次后移}// 插入新元素并更新表长L->data[index-1] = value;  // 数组下标从0开始,故减1L->length++;               // 表长增加return true;
}/* 打印顺序表* 参数:L - 顺序表指针* 流程:* 1. 遍历有效元素* 2. 空格分隔元素* 3. 末尾换行*/
void PrintList(SeqList *L){for(int i = 0; i < L->length; i++){printf("%d ", L->data[i]);  // 逐个输出元素}printf("\n");  // 换行保持输出格式
}/* 主函数测试流程* 测试策略:* 1. 初始化测试* 2. 正常插入(头部、中间、尾部)* 3. 边界测试(尾部追加)* 4. 异常测试(非法位置插入)*/
int main() {SeqList L;InitList(&L);// 初始状态验证printf("初始顺序表:");PrintList(&L);  // 应输出 []// 正常插入测试(验证不同位置的插入逻辑)InsertList(&L, 1, 10);  // 首部插入(空表插入)InsertList(&L, 2, 30);  // 尾部插入(容量足够时)InsertList(&L, 2, 20);  // 中间插入(触发元素移动)printf("插入3个元素后:");PrintList(&L);  // 应输出 [10 20 30]// 边界测试(验证最大容量的插入)InsertList(&L, 4, 40);  // 尾部追加(验证边界条件)printf("尾部追加后:");PrintList(&L);  // 应输出 [10 20 30 40]// 异常测试(验证错误处理能力)bool result = InsertList(&L, 6, 50);  // 非法位置(当前长度4,只能插入到位置5)printf("非法插入结果:%s\n", result ? "成功" : "失败");  // 应输出失败return 0;
}

 三.线性表的链式表示和实现(链表)

        1.存储方式

               通过节点(包含数据域和指针域)动态分配内存,逻辑相邻的元素在物理位置上不一定相邻

        2.类型

                单链表:     每个节点指向下一个结点

                双链表:     节点包含前驱和后继指针

                循环链表:  尾节点指向头节点

        3.特点

                优点: 进行插入/删除操作时高效,时间复杂度为O(1)

                缺点: 无法随机访问节点值,必须从头遍历,时间复杂度为O(n)  

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>/* 链表节点结构体* Data: 节点存储的数据(整型)* Next: 指向下一个节点的指针 */
typedef struct Node{int Data;struct Node *Next;
}Node;/* 初始化链表头节点* 返回值:已分配内存的头节点指针* 注意:头节点不存储有效数据,仅作为链表入口 */
Node* InitList(){Node* Head = (Node*)malloc(sizeof(Node));Head->Next = NULL;return Head;
}/* 头插法插入节点* Head: 链表头节点指针* Value: 要插入的整型数据* 流程:1.创建新节点 2.调整指针指向 */
void InsertHead(Node* Head, int Value){Node* NewNode = (Node*)malloc(sizeof(Node));NewNode->Data = Value;NewNode->Next = Head->Next;Head->Next = NewNode;
}/* 尾插法插入节点* Head: 链表头节点指针* Value: 要插入的整型数据* 流程:1.遍历到最后一个节点 2.在末尾插入新节点 */
void InsertTail(Node* Head, int Value){Node* Current = Head;while(Current->Next != NULL){Current = Current->Next;}Node* NewNode = (Node*)malloc(sizeof(Node));NewNode->Data = Value;NewNode->Next = NULL;Current->Next = NewNode;
}/* 删除指定值的节点* Head: 链表头节点指针* Value: 要删除的整型数据* 返回值:true删除成功,false未找到数据* 流程:双指针法遍历,找到后调整指针并释放内存 */
bool DeleteNode(Node* Head, int Value){Node* Previous = Head;Node* Current = Head->Next;while(Current!=NULL){if(Current->Data == Value){Previous->Next = Current->Next;free(Current);return true;}Previous = Current;Current = Current->Next;}return false;
}/* 修改指定位置节点的值* Head: 链表头节点指针* pos: 要修改的位置(从0开始计数)* NewValue: 新的整型数据值* 注意:如果位置超出链表长度,不会修改任何节点 */
void ModifyNode(Node* Head, int pos, int NewValue){Node* Current = Head->Next;int count = 0;while(Current!=NULL && count<pos){Current = Current->Next;count++;}if(Current!=NULL){Current->Data = NewValue;}
}/* 搜索节点位置* Head: 链表头节点指针* Value: 要查找的整型数据* 返回值:找到返回位置索引(从0开始),未找到返回-1 */
int SearchNode(Node* Head, int Value){Node* Current = Head->Next;int pos = 0;while(Current!=NULL){if(Current->Data == Value){return pos;}Current = Current->Next;pos++;}return -1;
}/* 打印整个链表* Head: 链表头节点指针* 输出格式:数据->数据->...->NULL */
void PrintList(Node* Head){Node* Current = Head->Next;while(Current!=NULL){printf("%d->", Current->Data);Current = Current->Next;}printf("NULL \n"); 
}/* 反转链表* Head: 链表头节点指针* 实现方式:三指针法原地反转* 流程:1.逐个节点反转指向 2.最后更新头节点指针 */
void ReverseList(Node* Head){Node* Previous = NULL;Node* Current = Head->Next;Node* Next = NULL; while(Current!=NULL){Next = Current->Next;Current->Next = Previous;Previous = Current;Current = Next; }Head->Next = Previous;
}/* 清空链表(保留头节点)* Head: 链表头节点指针* 流程:逐个释放所有节点内存,最后重置头节点指针 */
void ClearList(Node* Head){Node* Current = Head->Next;Node* Next = NULL;while(Current!=NULL){Next = Current->Next;free(Current);Current = Next;}Head->Next = NULL; 
}
int main(){Node* Head = InitList();InsertHead(Head, 1);InsertHead(Head, 2);InsertHead(Head, 3);InsertTail(Head, 4);InsertTail(Head, 5);PrintList(Head);DeleteNode(Head, 3);PrintList(Head);ModifyNode(Head, 1, 6);PrintList(Head);printf("Position of 6: %d\n", SearchNode(Head, 6));ReverseList(Head);PrintList(Head);ClearList(Head);PrintList(Head);return 0; 
}
        4.部分函数解析

                (1)链表逆置(ReverseList):

/* 三指针法实现链表逆置* 时间复杂度:O(n) 空间复杂度:O(1) * 执行过程:* 1. 初始化三个指针:Previous(前驱)、Current(当前)、Next(后继)* 2. 遍历链表,逐个反转节点指向* 3. 最后更新头节点指针 */
void ReverseList(Node* Head){Node* Previous = NULL;       // 前驱指针初始化为空Node* Current = Head->Next; // 当前指针指向第一个有效节点Node* Next = NULL;           // 后继指针用于临时存储while(Current != NULL){Next = Current->Next;    // 保存下一个节点Current->Next = Previous;// 反转指针方向Previous = Current;      // 前驱指针前移Current = Next;          // 当前指针前移}Head->Next = Previous;       // 更新头节点指向新的首节点
}

                (2) 头插法(InsertHead)

/* 头插法特点:* 1. 新节点总是插入在链表头部* 2. 插入顺序与最终链表顺序相反* 3. 时间复杂度:O(1) */
void InsertHead(Node* Head, int Value){Node* NewNode = (Node*)malloc(sizeof(Node));NewNode->Data = Value;NewNode->Next = Head->Next;  // 新节点指向原首节点Head->Next = NewNode;        // 头节点指向新节点
}

                 (3)尾插法(InsertTail)

/* 尾插法特点:* 1. 新节点总是追加在链表末尾* 2. 插入顺序与最终链表顺序一致* 3. 时间复杂度:O(n) */
void InsertTail(Node* Head, int Value){Node* Current = Head;while(Current->Next != NULL){ // 遍历到最后一个节点Current = Current->Next;}Node* NewNode = (Node*)malloc(sizeof(Node));NewNode->Data = Value;NewNode->Next = NULL;         // 新节点作为末节点Current->Next = NewNode;      // 原末节点指向新节点
}

相关文章:

数据结构(二) 线性表

一. 线性表 1.定义 线性表是由n(n>0)个具有相同数据类型的数据元素构成的有限序列。其中&#xff0c;元素之间通过顺序关系排列&#xff0c;每个元素有且只有一个直接前驱和一个直接后继(除首尾元素外) 二.线性表的顺序表示(顺序表) 1.存储方式 使用连续的内存空间(数组)存储…...

TS04:高性能四通道自动灵敏度校准电容触摸传感器

在现代电子设备中&#xff0c;电容触摸传感器的应用越来越广泛&#xff0c;而高性能的传感器芯片是实现良好用户体验的关键。 TS04 四通道电容触摸传感器&#xff0c;凭借其自动灵敏度校准功能和多种特性&#xff0c;成为理想的解决方案。本文将简要介绍 TS04 的主要特性、功能…...

鸿蒙 系统-安全-程序访问控制-应用权限管控

Ability Kit 提供了一种允许应用访问系统资源&#xff08;如&#xff1a;通讯录等&#xff09;和系统能力&#xff08;如&#xff1a;访问摄像头、麦克风等&#xff09;的通用权限访问方式&#xff0c;来保护系统数据&#xff08;包括用户个人数据&#xff09;或功能&#xff0…...

ArcGIS Pro 3.4 二次开发 - 框架

环境&#xff1a;ArcGIS Pro SDK 3.4 .NET 8 文章目录 框架1 框架1.1 如何在 DockPane 可见或隐藏时订阅和取消订阅事件1.2 执行命令1.3 设置当前工具1.4 激活选项卡1.5 激活/停用状态 - 修改条件1.6 判断应用程序是否繁忙1.7 获取应用程序主窗口1.8 关闭 ArcGIS Pro1.9 获取 …...

打破传统仓库管理困局:WMS如何重构出入库全流程

引言 在制造业与零售业高速发展的今天&#xff0c;仓库管理仍普遍面临效率低、错发漏发频发、库存数据滞后等痛点。人工登记导致30%的错单率&#xff0c;货位混乱让拣货耗时增加50%&#xff0c;而账实不符引发的二次采购成本更吞噬着企业利润。如何突破传统管理桎梏&#xff1…...

npm 安装时 SSL 证书过期问题笔记

问题描述: npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/axios failed, reason: certificate has expired 这表明当前配置的 npm 镜像源&#xff08;淘宝镜像 https://registry.npm.taobao.org&…...

【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页

PageRank 是 Google 创始人拉里佩奇&#xff08;Larry Page&#xff09;和谢尔盖布林&#xff08;Sergey Brin&#xff09;在 1998 年提出的一种网页排名算法&#xff0c;用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…...

Craw4AI:LLM友好的网页爬虫

GitHub&#xff1a;https://github.com/unclecode/crawl4ai 更多AI开源软件&#xff1a;发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI Crawl4AI旨在让网页爬取和数据提取变得简单而高效。无论构建复杂的 AI 应用程序还是增强大语言模型&#xff0c;Crawl4AI 都能…...

idea 安装飞算-javaAI 插件使用

文章目录 前言idea 安装飞算-javaAI 插件使用1. 介绍一下飞算-AI2. 安装使用 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的…...

Lombok

Lombok Lombok 是一个 Java 库&#xff0c;通过注解自动生成样板代码&#xff08;如 Getter/Setter、构造函数等&#xff09;&#xff0c;从而简化开发。在你提供的代码中&#xff0c;AllArgsConstructor 就是一个 Lombok 注解。以下是 Lombok 常用注解及其作用的详细说明&…...

起点与破圈

写了多年代码&#xff0c;我为什么开始转向算法&#xff0c;直到如今投身于大模型领域&#xff1f; 作为一名拥有 10 年经验的开发者&#xff0c;我的职业路径几乎覆盖了技术发展的多个阶段。从最早使用 Flask/Django 开发网站&#xff0c;到后来构建大数据系统、设计服务器架…...

基于AI的Web数据管道,使用n8n、Scrapeless和Claude

引言 在当今数据驱动的环境中&#xff0c;组织需要高效的方法来提取、处理和分析网络内容。传统的网络抓取面临着诸多挑战&#xff1a;反机器人保护、复杂的JavaScript渲染以及持续的维护需求。此外&#xff0c;理解非结构化的网络数据则需要复杂的处理能力。 本指南演示了如…...

7GB显存如何部署bf16精度的DeepSeek-R1 70B大模型?

构建RAG混合开发---PythonAIJavaEEVue.js前端的实践-CSDN博客 服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案-CSDN博客 conda管理python环境-CSDN博客 快速搭建对象存储服务 - Minio&#xff0c;并解决临时地址暴露ip、短链接请求改…...

初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)

文章目录 一、什么是函数&#xff1f;二、函数定义与调用2.1 基本语法2.2 示例演示 三、函数参数详解3.1 位置参数3.2 默认参数3.3 可变参数3.4 关键字参数 四、返回值与文档说明4.1 返回多个值4.2 编写文档字符串 五、函数嵌套与作用域5.1 嵌套函数示例5.2 变量作用域5.3 glob…...

Java常见API文档(下)

格式化的时间形式的常用模式对应关系如下&#xff1a; 空参构造创造simdateformate对象&#xff0c;默认格式 练习.按照指定格式展示 package kl002;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Date3 {publi…...

ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案

ping baidu.coom可以通&#xff0c;ping www.baidu.com不通【DNS出现问题】解决方案 检查IPV6是否有问题 # 1. 检查 IPv6 地址&#xff0c;记住网络接口的名称 ip -6 addr show# 2. 测试本地 IPv6&#xff0c;eth0换成自己的网络接口名称 ping6 ff02::1%eth0# 3. 检查路由 ip…...

Oracle 中 open_cursors 参数详解:原理、配置与性能测试

#Oracle #参数 # open_cursors #ORA-01000 在 Oracle 数据库的众多参数中&#xff0c;open_cursors是一个对应用程序性能和资源管理有着重要影响的参数。它直接关系到数据库与应用程序之间游标资源的使用与分配&#xff0c;合理配置open_cursors参数&#xff0c;能够避免应用程…...

线程调度与单例模式:wait、notify与懒汉模式解析

一.wait 和 notify&#xff08;等待 和 通知&#xff09; 引入 wait notify 就是为了能够从应用层面&#xff0c;干预到多个不同线程代码的执行顺序&#xff0c;可以让后执行的线程主动放弃被调度的机会&#xff0c;等先执行的线程完成后通知放弃调度的线程重新执行。 自助取…...

AGI大模型(27):LangChain向量存储

1 安装依赖 使用一个简单的本地向量存储 FAISS,首先需要安装它 pip install faiss-cpu -i https://pypi.tuna.tsinghua.edu.cn/simple pip install langchain_community==0.3.7 -i https://pypi.tuna.tsinghua.edu.cn/simple 由于演示过程中用到了爬虫,需要安装依赖库,如…...

Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析

Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news数据集Zero-Shot的效果。新增Qwen3-0.6B线性层分类方法的效果。调整Bert训练参数&#xff08;epoch、eval_steps&#xff09;&#xff0c;以实现更细致的观察&#xff0c;避免严重过拟合的情况。 TODO&#xff1a; 利用Qwen3-0.6…...

Oracle 的 PGA_AGGREGATE_LIMIT 参数

Oracle 的 PGA_AGGREGATE_LIMIT 参数 基本概念 PGA_AGGREGATE_LIMIT 是 Oracle 数据库 12c 引入的一个重要内存管理参数&#xff0c;用于限制所有服务器进程使用的 PGA&#xff08;Program Global Area&#xff09;内存总量。 参数作用 硬性限制&#xff1a;设置 PGA 内存使…...

# idea 中如何将 java 项目打包成 jar 包?

idea 中如何将 java 项目打包成 jar 包&#xff1f; 例如如何将项目dzs168-dashboard-generate打包成 dzs168-dashboard-generate.jar 1、打开项目结构 Project Structure 在IDEA的顶部菜单栏中选择【File】&#xff0c;然后选择【Project Structure】&#xff08;或者使用快…...

JVM(Java 虚拟机)深度解析

JVM&#xff08;Java 虚拟机&#xff09;深度解析 作为 Java 生态系统的核心&#xff0c;JVM&#xff08;Java Virtual Machine&#xff09;是 Java 语言 "一次编写&#xff0c;到处运行" 的关键。它不仅是 Java 程序的运行环境&#xff0c;更是一个复杂的系统软件&…...

算法题(150):拼数

审题&#xff1a; 本题需要我们将数组中的数据经过排序&#xff0c;使得他们拼接后得到的数是所有拼接方案中最大的 思路&#xff1a; 方法一&#xff1a;排序贪心 贪心策略1&#xff1a;直接排序 如果我们直接按照数组数据的字典序进行排序&#xff0c;会导致部分情况出错 eg&…...

怎么样进行定性分析

本文章将教会你如何对实验结果进行定性分析&#xff0c;其需要一定的论文基础&#xff0c;文末有论文撰写小技巧&#xff0c;不想看基础原理的人可以直接调到文章末尾。 一、什么是定性分析 定性分析是一种在众多领域广泛应用的研究方法&#xff0c;它致力于对事物的性质、特…...

RLᵛ_ Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers

RLᵛ: Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers 在人工智能领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的推理能力提升一直是研究热点。今天要解读的论文提出了一种全新的强化学习框架RLᵛ&#xff0c;通过融合推理与验证能力&#xf…...

关于百度地图JSAPI自定义标注的图标显示不完整的问题(其实只是因为图片尺寸问题)

下载了几个阿里矢量图标库里的图标作为百度地图的自定义图标&#xff0c;结果百度地图显示的图标一直不完整。下载的PNG图标已经被正常引入到前端代码&#xff0c;anchor也设置为了图标底部中心&#xff0c;结果还是显示不完整。 if (iconUrl) {const icon new mapClass.Icon(…...

海思22AP70集超强算力、4K60编解码与多元特性于一体的智能SoC可替代3559V200、3516AV300、3556A

嘿&#xff0c;朋友们&#xff01;在这个对视觉效果有着极致追求的时代&#xff0c;海思半导体带着满满的诚意&#xff0c;为大家呈上一款堪称惊艳的专业超高清智能网络录像机SoC——22AP70&#xff0c;它就像一颗闪耀的科技新星&#xff0c;即将在各个领域掀起一场视觉革命&am…...

网络协议之一根网线就能连接两台电脑?

写在前面 ~~~~ 如果有两台电脑&#xff0c;通过一根网线可以实现网络互通吗&#xff1f;三台电脑呢&#xff1f;N台电脑呢&#xff1f;本文就以此作为主线来看下吧&#xff01; 1&#xff1a;正文 ~~~~ 如标题&#xff0c;一根网线就能连接两台电脑&#xff1f;答案是肯定的&a…...

为 Windows 和 Ubuntu 中设定代理服务器的详细方法

有时下载大模型总是下载不出来&#xff0c;要配置代理才行 一、Windows代理设置 ① 系统全局代理设置 打开【设置】→【网络和Internet】→【代理】。 在【手动设置代理】下&#xff0c;打开开关&#xff0c;输入&#xff1a; 地址&#xff1a;10.10.10.215 端口&#xff1a;…...

cmd里可以使用npm,vscode里使用npm 报错

cmd里可以使用npm,vscode里使用npm 报错 报错提示原因解决方法 报错提示 npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系 统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/ fwlink/?LinkID135170 中的 about_Executi…...

MySQL数据库基础 -- SQL 语句的分类,存储引擎

目录 1. 什么是数据库 2. 基本使用 2.1 进入 mysql 2.2 服务器、数据库以及表的关系 2.3 使用案例 2.4 数据逻辑存储 3. SQL 语句分类 4. 存储引擎 4.1 查看存储引擎 4.2 存储引擎的对比 1. 什么是数据库 安装完 MySQL 之后&#xff0c;会有 mysql 和 mysqld。 MySQL …...

设置windows10同时多用户登录方法

RDP wrapper 的版本更新停止在2017年&#xff0c; 找到网上其它大神更新的软件&#xff0c; 参考&#xff1a;RDPWrap v1.8.9.9 (Windows家庭版开启远程桌面、Server解除远程数量限制&#xff09; - 吾爱破解 - 52pojie.cn 我的需求是在离线环境中布置&#xff0c;方法是&…...

【hive】hive内存dump导出hprof文件

使用jmap -dump:live,formatb,file命令 hive-metastore-heap-eval.sh文件 # if want hiveserver2 ,should grep "org.apache.hive.service.server.HiveServer2" # get pid pidps -ef | grep "org.apache.hadoop.hive.metastore.HiveMetaStore" | grep &qu…...

专题讨论3:基于图的基本原理实现走迷宫问题

问题描述 迷宫通常以二维矩阵形式呈现&#xff0c;矩阵中的元素用 0 和 1 表示&#xff0c;其中 0 代表通路&#xff0c;1 代表墙壁 。存在特定的起点和终点坐标&#xff0c;目标是从起点出发&#xff0c;寻找一条能够到达终点的路径。 实现思路 将迷宫中的每个可通行单元格…...

Linux基础第四天

系统之间文件共享 想要实现两个不同的系统之间实现文件共享&#xff0c;最简单的一种方案就是设置VMware软件的共享文件夹&#xff0c;利用共享文件夹可以实现linux系统和windows系统之间的文件共享&#xff0c;这样就可以实现在windows系统上编辑程序&#xff0c;然后在linux系…...

eNSP中单臂路由器配置完整实验及命令解释

单臂路由器&#xff08;Router on a Stick&#xff09;是一种通过单个物理接口处理多个VLAN间路由的解决方案 单臂路由器通过以下方式工作&#xff1a; 交换机端口配置为Trunk模式&#xff0c;允许多个VLAN流量通过路由器子接口为每个VLAN创建虚拟接口每个子接口配置对应VLAN…...

TeaType 奶茶性格占卜机开发记录:一场俏皮的 UniApp 单页奇遇

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 最近我突发奇想&#xff0c;想用 UniApp 做一个轻松又俏皮的小工具&#xff0c;叫做「TeaType 奶茶性格占卜机」…...

AI神经网络降噪 vs 传统单/双麦克风降噪的核心优势对比

1. 降噪原理的本质差异 对比维度传统单/双麦克风降噪AI神经网络降噪技术基础基于固定规则的信号处理&#xff08;如谱减法、维纳滤波&#xff09;基于深度学习的动态建模&#xff08;DNN/CNN/Transformer&#xff09;噪声样本依赖预设有限噪声类型训练数据覆盖数十万种真实环境…...

【Nginx学习笔记】:Fastapi服务部署单机Nginx配置说明

服务部署单机Nginx配置说明 服务.conf配置文件&#xff1a; upstream asr_backend {server 127.0.0.1:8010; }server {listen 80;server_name your_domain.com;location / {proxy_pass http://localhost:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remot…...

JAVA Web 期末速成

一、专业术语及名词 1. Web 的特点 定义&#xff1a;web 是分布在全世界&#xff0c;基于 HTTP 通信协议&#xff0c;存储在 Web 服务器中的所有相互链接的超文本集 Web 是一种分布式超媒体系统Web 是多媒体化 和 易于导航的Web 与平台无关Web 是动态、交互的 2. TCP/IP 结…...

iOS:重新定义移动交互,引领智能生活新潮流

在当今智能手机与移动设备充斥的时代&#xff0c;操作系统作为其 “灵魂”&#xff0c;掌控着用户体验的方方面面。iOS 系统&#xff0c;这一由苹果公司精心雕琢的杰作&#xff0c;自诞生起便以独特魅力与卓越性能&#xff0c;在移动操作系统领域独树一帜&#xff0c;深刻影响着…...

LabVIEW数据库使用说明

介绍LabVIEW如何在数据库中插入记录以及执行 SQL 查询&#xff0c;适用于对数据库进行数据管理和操作的场景。借助 Database Connectivity Toolkit&#xff0c;可便捷地与指定数据库交互。 各 VI 功能详述 左侧 VI 功能概述&#xff1a;实现向数据库表中插入数据的操作。当输入…...

Linux多进程 写时拷贝 物理地址和逻辑地址

如果不采用写时拷贝技术 直接fork子进程 会发生什么&#xff1f; 如上图所示 橙色为父进程所占内存空间 绿色为子进程所占内存空间。 如果子进程只是需要做出一点点和父进程不一样的 其余和父进程均为相同 第一 就会出现复制开销比较大&#xff1b;第二占用内存空间 所以 …...

在 CentOS 7.9 上部署 node_exporter 并接入 Prometheus + Grafana 实现主机监控

文章目录 在 CentOS 7.9 上部署 node_exporter 并接入 Prometheus Grafana 实现主机监控环境说明node_exporter 安装与配置下载并解压 node_exporter创建 Systemd 启动服务验证服务状态验证端口监听 Prometheus 配置 node_exporter 监控项修改 prometheus.yml重新加载 Prometh…...

Java 反射(Reflection)技术

反射是 Java 提供的一种强大机制&#xff0c;允许程序在运行时&#xff08;Runtime&#xff09;动态地获取类的信息、操作类的属性和方法。这种能力使得 Java 程序可以突破编译时的限制&#xff0c;实现更灵活的设计。 一、反射的核心概念 1. 什么是反射 反射是指在程序运行…...

【SpringBoot】从零开始全面解析SpringMVC (三)

本篇博客给大家带来的是SpringBoot的知识点, 本篇是SpringBoot入门, 介绍SpringMVC相关知识. &#x1f40e;文章专栏: JavaEE进阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,…...

DeerFlow安装配置及使用案例

DeerFlow安装配置及使用案例 简介 ​ DeerFlow项目由字节跳动技术团队发起和主导开发&#xff0c;作为一个开源深度研究框架&#xff0c;于2025年年初正式开源。该项目基于LangStack生态&#xff0c;构建于LangChain与LangGraph的开源技术栈之上&#xff0c;充分利用语言模型…...

吉林省建筑工程专业技术人员职称评审实施办法

吉林省人力资源和社会保障厅 吉林省建筑工程专业技术人员职称评审实施办法 吉林省建筑工程技术人才之技术员评审条件 吉林省建筑工程技术人才之助理工程师评审条件 吉林省建筑工程技术人才之工程师评审条件 吉林省建筑工程技术人才之高级工程师评审条件 吉林省建筑工程技术人才…...

React组件开发流程-03.1

此章先以一个完整的例子来全面了解下React组件开发的流程&#xff0c;主要是以代码为主&#xff0c;在不同的章节中会把重点标出来&#xff0c;要完成的例子如下&#xff0c;也可从官网中找到。 React组件开发流程 这只是一个通用流程&#xff0c;在熟悉后不需要完全遵从。 …...