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

C语言——链表

1 链表基础

1 什么是链表

!!!链表相当于多个结构体变量链接在一起!!!

//链表节点结构
struct Node //数据域和指针域
{int data;  //数据域//struct Student data;数据尽量不写在链表结构体里面,写在外面struct Node* next; //指针域——>指向自己的指针
};//引用链表的时候写外面
struct Student 
{char name[20];int age;int num;int math;int english;
};
//创建3个结构体变量struct Node node1 = { 1,NULL };struct Node node2 = { 2,NULL };struct Node node3 = { 3,NULL };
//线性结构	node1.next = &node2;node2.next = &node3;

在这里插入图片描述

因为表头有数据,头节点可能会改变就叫无头链表

有头链表第一个结构体没有数据,头节点不会改变

普通变量是在栈区的,想把链表存在堆区,所以要用指针

2 怎么打印链表

struct Node* pmove = &node1;
while (pmove != NULL) 
{printf("%d\t", pmove->data);pmove = pmove->next;//因为pmove指向node1,node1里面的next指向下一节点
}
printf("\n");

注:一般用这个方法

//封装采用的写法,用一个指针表示一个结构体变量
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
assert(newNode);
newNode->data = 4;
newNode->next = NULL;

2 链表操作

2.1 有头链表的封装

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct Node 
{int data;struct Node* next;
}Node;-----------------------------------------------------------------------------------------//创建表头(创建链表),有表头链表,表头不存放数据(有人用表头数据域固定数据之类或者干别的,思想不要固化)
//表头就是结构体变量 -->创建一个堆区的变量 用指针表示
Node* create_list() 
{Node* headNode = (Node*)malloc(sizeof(Node));assert(headNode);headNode->next = NULL;return headNode;
}-----------------------------------------------------------------------------------------//创建节点-->创建结构体变量 --->把数据加工成为节点形式(只有节点形数据才能插进去)
Node* create_node(int data) 
{Node* newNode = (Node*)malloc(sizeof(Node));assert(newNode);newNode->data = data;newNode->next = NULL;return newNode;
}-----------------------------------------------------------------------------------------
//打印void print_list(Node* headNode) 
{//因为表头不存放数据,从第二个节点开始打印Node* pmove = headNode->next;while (pmove != NULL) {printf("%d\t", pmove->data);pmove = pmove->next;}printf("\n");
}-----------------------------------------------------------------------------------------

2.2 插入

//插入
//头插法
void push_front(Node* headNode, int data) 
{//创建插入的节点Node* newNode = create_node(data);newNode->next = headNode->next;headNode->next = newNode;
}-----------------------------------------------------------------------------------------//尾插法——>(特征:表尾的next指针是空的)
void push_back(Node* headNode, int data) 
{Node* newNode = create_node(data);Node* tailNode = headNode;//表尾的next指针是空的while (tailNode->next != NULL)   {tailNode = tailNode->next;//一直找,找到就退出循环,tailNode 就是表尾}tailNode->next = newNode;
}-----------------------------------------------------------------------------------------//指定位置插入——>(用2个并行的指针匹配位置)
void insert_list(Node* headNode, int posData, int data) 
{	//先不着急创建节点,找不到浪费内存,先去匹配//找到指定节点指定节点的前驱节点Node* preNode = headNode;Node* posNode = headNode->next;while (posNode != NULL && posNode->data != posData) {//posNode = posNode->next;//preNode = preNode->next;//等效下面代码preNode = posNode;posNode = preNode->next;}//分析退出循环条件if (posNode == NULL) {printf("未找到指定节点无法插入!\n");}else {Node* newNode = create_node(data);preNode->next = newNode;newNode->next = posNode;}
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 删除

//删除//头删
void pop_front(Node* headNode) 
{if (headNode == NULL || headNode->next == NULL) {printf("链表为空无法删除!\n");}else {Node* frontNode = headNode->next;headNode->next = frontNode->next;free(frontNode);frontNode = NULL;}
}//尾删
void pop_back(Node* headNode) 
{if (headNode == NULL || headNode->next == NULL){printf("链表为空无法删除!\n");}else {	//删掉尾部,要把前一个结点的next制空struct Node* preNode = NULL;struct Node* tailNode = headNode;while (tailNode->next != NULL) {preNode = tailNode;tailNode = preNode->next;}free(tailNode);tailNode = NULL;preNode->next = NULL;}
}
//指定位置删除
void erase_list(Node* headNode, int posData) 
{if (headNode == NULL || headNode->next == NULL){printf("链表为空无法删除!\n");}else{Node* preNode = headNode;Node* posNode = headNode->next;while (posNode != NULL && posNode->data != posData) {preNode = posNode;posNode = preNode->next;}//分析查找结果if (posNode == NULL) {printf("未找到相关节点无法删除!\n");}else {preNode->next = posNode->next;free(posNode);posNode = NULL;}}
}

在这里插入图片描述

在这里插入图片描述

//测试
int main() 
{Node* list = create_list();for (int i = 1; i <= 3; i++) {push_front(list, i);}print_list(list);push_back(list,666);push_back(list,999);print_list(list);insert_list(list, 666, 888);print_list(list);pop_front(list);print_list(list);pop_back(list);print_list(list);erase_list(list,888);print_list(list);return 0;
}

3 链表的算法

//1.有序链表的构建
void push_sort(Node* list, int data) 
{	//找到比他大的插前面,没有就尾插Node* newNode = create_node(data);Node* preNode = list;Node* posNode = list->next;	//找第一次比插入数据大的地方while (posNode != NULL && posNode->data <= data) {	//更新preNode = posNode;posNode = preNode->next;}if (posNode == NULL) {// 链表为空或者新节点应该插入到链表尾部preNode->next = newNode;else {	//找到就插前面preNode->next = newNode;newNode->next = posNode;}
}int main() 
{Node* list = create_list();push_sort(list,8);push_sort(list,2);push_sort(list,3);push_sort(list,5);push_sort(list,4);print_list(list, "有序链表的构建");return 0;
}
//2.链表的归并
//1 3 5
//2 4 6 8
//1 2 3 4 5 6 8
//2.1 笨方法 -->依次遍历两个链表,采用有序插入即可(时间复杂度比较高,算法题过不去),因为它需要对结果链表进行多次插入操作,每次插入都可能涉及到链表的多次移动。
//2.2 类似数组的归并,不用创建节点浪费时间
void merge_list(Node* result, Node* one, Node* two) 
{Node* first = one->next;Node* second = two->next;Node* tailNode = result;while (first != NULL && second != NULL) {if (first->data < second->data) {tailNode->next = first;//更新2个tailNode = first;//将 tailNode 指针更新为指向 first 节点first = first->next;}else {tailNode->next = second;tailNode = second;//更新second = second->next;//更新}}//如果两个链表长度不一样,剩下的尾插(前提是两个有序的)if (first != NULL) {tailNode->next = first;}if (second != NULL) {tailNode->next = second;}
}int main(){Node* list2 = create_list();push_sort(list2, 1);push_sort(list2, 9);push_sort(list2, 7);Node* result = create_list();merge_list(result, list, list2);print_list(result, "归并两个有序链表");retuen 0;
}
//3.链表的反转
//3.1 笨方法 创建一个新链表,遍历老链表采用表头法插入即可
// 1 2 3    :1  2 1   3 2 1
//3.2 直接反转指针的方式
void reverse_list(Node* list) 
{//它确保链表不为空,并且链表至少包含三个节点才进行反转if (list == NULL || list->next == NULL || list->next->next == NULL) {return;}Node* preNode = NULL;Node* curNode = list->next;Node* surList = curNode->next;//surList只有一个作用就是找到表尾while (surList != NULL) {	//反转 curNode 的指向curNode->next = preNode;//三个指针往后更新preNode = curNode;curNode = surList;surList = curNode->next;}//找到表尾之后的操作curNode->next = preNode;list->next = curNode;
}int main(){reverse_list(result);print_list(result, "反转链表");return 0;
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4 注意

归并算法的典型应用场景包括:

  1. 合并有序数组:在两个已经排序的数组上进行操作,合并成一个新的有序数组。
  2. 合并有序链表:在两个已经排序的链表上进行操作,合并成一个新的有序链表。
  3. 外部排序:当数据太大无法一次性装入内存时,可能会将数据分割成多个有序的块,存储在外部存储器中,然后逐步归并这些块形成一个有序的序列。
  4. 归并排序:归并排序算法在内部使用归并操作作为其核心操作,通过递归地将序列分割成更小的部分,然后合并这些部分。

如果序列无序

  • 如果你有两个无序的序列,并希望合并它们,那么你需要在合并之前先对每个序列进行排序,或者在合并的同时进行排序(例如,使用归并排序算法)。
  • 在某些情况下,如果不需要合并后的序列是有序的,那么归并操作可以不需要输入序列有序。例如,如果你只是将两个无序链表的节点串联起来,形成一个更长的无序链表,那么不需要先排序。

相关文章:

C语言——链表

1 链表基础 1 什么是链表 &#xff01;&#xff01;&#xff01;链表相当于多个结构体变量链接在一起&#xff01;&#xff01;&#xff01; //链表节点结构 struct Node //数据域和指针域 {int data; //数据域//struct Student data;数据尽量不写在链表结构体里面&#xf…...

【经典】星空主题的注册界面HTML,CSS,JS

目录 界面展示 完整代码 说明&#xff1a; 这是一个简单的星空主题的注册界面&#xff0c;使用了 HTML 和 CSS 来实现一个背景为星空效果的注册页面。 界面展示 完整代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8&…...

94.【C语言】解析预处理(2)

目录 1.带有副作用的宏参数 代码 一个判断最大值的宏代码 运行结果 分析 "副作用"的解释 2.宏替换规则 解释 3.宏和函数的对比 附一张对比表 承接93.【C语言】解析预处理(1)文章 1.带有副作用的宏参数 代码 一个判断最大值的宏代码 #define MAX(a, b) (…...

(数据结构与算法)如何提高学习算法的效率?面试算法重点有哪些?面试需要哪些能力?

面试官眼中的求职者 通过对你算法的考察&#xff01;&#xff01;&#xff01;&#xff01; 缩进太多&#xff01;&#xff01;一般不要超过三层&#xff01;&#xff01;&#xff01;缩进越少&#xff0c;bug越少&#xff1b;逻辑比较复杂&#xff0c;把这些包装成为函数&…...

STM32 BootLoader 刷新项目 (十二) Option Byte之FLASH_OPTCR-命令0x58

STM32 BootLoader 刷新项目 (十二) Option Byte之FLASH_OPTCR-命令0x58 STM32F407芯片的OPTION Byte全面解析 STM32F407芯片是STMicroelectronics推出的一款功能强大的微控制器&#xff0c;广泛应用于工业控制、通信和消费电子等领域。其中&#xff0c;OPTION Byte&#xff0…...

MySQL主从复制

华子目录 实验环境准备修改配置文件 实验主开启bin-log日志创建用于主从复制的用户master配置salve配置 测试 添加一台新的slave&#xff0c;如何实现数据的全部同步呢什么环境下主比较多&#xff0c;什么环境下从比较多&#xff1f;延迟复制测试 并行复制gtid模式未启用gtid时…...

贝叶斯统计:高斯分布均值μ的后验分布推导

使用贝叶斯统计方法 均值 ( μ \mu μ ) 的后验分布解析 在贝叶斯统计中&#xff0c;后验分布表示在观察到数据后&#xff0c;对参数的更新后的信念。本篇文章将结合高斯分布的假设&#xff0c;详细解析均值 ( μ \mu μ ) 的后验分布推导过程&#xff0c;并对 ( μ \mu μ…...

linux常用指令都是工作中遇到的

前端打war包 jar -cvf dist.war *创建 WAR 文件的命令 jar -cvf dist.war * 用于将当前目录下的所有文件和文件夹打包成一个名为 dist.war 的 WAR 文件。以下是该命令的详细解释&#xff1a; jar: Java Archive 工具&#xff0c;用于创建 JAR、WAR 或 EAR 文件。 -c: 创建新的…...

亚马逊自研大语言模型 Olympus 即将亮相,或将在 LLM 竞赛中掀起新波澜

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

droppath

DropPath 是一种用于正则化深度学习模型的技术&#xff0c;它在训练过程中随机丢弃路径&#xff08;或者说随机让某些部分的输出变为零&#xff09;&#xff0c;从而增强模型的鲁棒性和泛化能力。 代码解释&#xff1a; import torch import torch.nn as nn # 定义 DropPath…...

通信与网络安全之IPSEC

IPSec&#xff08;IP Security&#xff09;是IETF制定的为保证在Internet上传送数据的安全保密性能的三层隧道加密协议。IPSec在网络层对IP报文提供安全服务。IPSec协议本身定义了如何在IP数据包中增加字段来保证IP包的完整性、 私有性和真实性&#xff0c;以及如何加密数据包。…...

Linux内核编译流程(Ubuntu24.04+Linux Kernel 6.8.12)

万恶的拯救者&#xff0c;使用Ubuntu没有声音&#xff0c;必须要自己修改一下Linux内核中的相关驱动逻辑才可以&#xff0c;所以被迫学习怎么修改内核&编译内核&#xff0c;记录如下 准备工作 下载Linux源码&#xff1a;在Linux发布页下载并使用gpg签名验证 即&#xff1a…...

什么是GAN?

一、基本概念 生成对抗网络&#xff08;Generative Adversarial Network&#xff0c;GAN&#xff09;是一种由两个神经网络共同组成深度学习模型&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;。这两个网络通过对抗的方式…...

torch_geometric使用手册-Creating Graph Datasets(专题四)

虽然 PyG 已经提供了很多有用的数据集,但你可能希望创建自己的数据集,使用自己收集的数据或非公开的数据。 自己实现数据集是非常简单的,你可能想查看源代码,了解各种数据集是如何实现的。然而,这里简要介绍一下如何设置你自己的数据集。 我们提供了两个抽象类用于数据集…...

编程语言之Python

Python是一种高级编程语言&#xff0c;自其诞生以来&#xff0c;便因其简洁明了的语法、强大的功能和广泛的应用领域而备受青睐。以下是对Python的详细介绍&#xff0c;包括其历史、特点、应用领域&#xff0c;以及通过代码示例展示其语法、库、函数等关键概念。同时&#xff0…...

【Go】-调度器简介

目录 数据结构 G M P 调度器启动 创建 Goroutine 初始化结构体 运行队列 调度信息 调度循环 小结 数据结构 Go的运行时调度器的三个重要组成部分 — 线程 M、Goroutine G 和处理器 P&#xff1a; 图 6-29 Go 语言调度器 G — 表示 Goroutine&#xff0c;它是一个待…...

在Ubuntu 22.04上设置Python 3的Jupyter Notebook

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Jupyter Notebook 是一个作为 Web 应用程序的交互式计算命令 shell。该工具可与多种语言一起使用&#xff0c;包括 Python、Julia…...

通讯专题4.1——CAN通信之计算机网络与现场总线

从通讯专题4开始&#xff0c;来学习CAN总线的内容。 为了更好的学习CAN&#xff0c;先从计算机网络与现场总线开始了解。 1 计算机网络体系的结构 在我们生活当中&#xff0c;有许多的网络&#xff0c;如交通网&#xff08;铁路、公路等&#xff09;、通信网&#xff08;电信、…...

将jar包导入maven

1.将jar包放repository 2.执行命令&#xff1a;mvn install:install-file -DgroupIdcom.oracle -DartifactIdojdbc7 -Dversion12.1.0.2 -Dpackagingjar -DfileD:\dev\utils\idea\repository\ojdbc7.jar -Dfile: 指定要安装的JAR文件的路径。 -DgroupId: 指定项目的groupId。 -…...

Mysql实现定时自动备份(Windows环境)

一.新建数据库备份目录 二.新建批处理文件 创建批处理文件mysql_backup.bat echo off set BACKUP_DIRD:\backup set MYSQL_USERroot set MYSQL_PASS123456 set MYSQL_HOSTlocalhost set DATABASE_NAMEphoenix set DATE%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time…...

kafka数据在服务端时怎么写入的

学习背景 接着上篇&#xff0c;我们来聊聊kafka数据在服务端怎么写入的 服务端写入 在介绍服务端的写流程之前&#xff0c;我们先要理解服务端的几个角色之间的关系。 假设我们有一个由3个broker组成的kafka集群&#xff0c;我们在这个集群上创建一个topic叫做shitu-topic&…...

2024算法基础公选课练习七(BFS1)

一、前言 还是偏基础的bfs&#xff0c;但是有几个题不是很好写 二、题目总览 三、具体题目 3.1 问题 A: 数据结构-队列-奇怪的电梯 我的代码 可以看成求一维平面的bfs最短路 #include <bits/stdc.h> using i64 long long; using pii std::pair<int,int>; co…...

算法刷题Day1

BM47 寻找第k大 第一天就随便记录吧&#xff0c;万事开头难&#xff0c;我好不容易开的头&#xff0c;就别难为自己&#xff0c;去追求高质量了。嘿嘿嘿 题目 传送门 解题思路一&#xff1a;维护一个大小为k的最小堆。最后返回堆顶元素。 代码&#xff1a; # # 代码中的类名…...

你还没有将 Siri 接入GPT对话功能吗?

由于各种原因&#xff0c;国内ios用户目前无缘自带 AI 功能&#xff0c;但是这并不代表国内 ios 无法接入 AI 功能&#xff0c;接下来手把手带你为iPhone siri 接入 gpt 对话功能。 siri 接入 chatGPT 暂时还无法下载 ChatGPT app&#xff0c;或者没有账号的读者可以直接跳到…...

LabVIEW 标准状态机设计模式

LabVIEW 标准状态机设计模式 LabVIEW 软件框架介绍LabVIEW编程模式及其应用分析状态机模式的类型分析标准状态机设计模式及状态机应用学习顺序结构它的一个缺点是什么&#xff1f; 状态机结构 LabVIEW 软件框架介绍 源于虚拟仪器技术的LabVIEW程序设计语言&#xff0c;从被创建…...

Scala学习记录,统计成绩

统计成绩练习 1.计算每个同学的总分和平均分 2.统计每个科目的平均分 3.列出总分前三名和单科前三名&#xff0c;并保存结果到文件中 解题思路如下&#xff1a; 1.读入txt文件&#xff0c;按行读入 2.处理数据 &#xff08;1&#xff09;计算每个同学的总分平均分 import s…...

使用 client-go 实现 Kubernetes 节点 Drain:详解与实战教程

在 Kubernetes 中使用 client-go 实现 drain 功能涉及多个步骤&#xff0c;需要模仿 kubectl drain 的行为。这包括将节点标记为不可调度&#xff08;cordon&#xff09;、驱逐 Pod&#xff0c;并处理 DaemonSet 和不可驱逐 Pod 的逻辑。以下是实现 drain 的主要步骤&#xff1…...

C#VB.Net项目一键多国语言显示

如何在项目什么都不做一键支持多国语言显示 开始我们的一键快捷使用之旅 01.创建多语言项目 02.一键批量窗口开启本地化,添加选中内容添加Mu方法 03.一键快捷翻译 04.运行查看效果 01.创建多语言项目 创建多语言项目前,请先下载安装&#xff0c;注册并登录. 为了便于演示这…...

【关闭or开启电脑自带的数字键盘】

目录 一、按数字键盘左上角的按键【NumLK Scroll】 二、修改注册表中数字键盘对应的数值【InitialKeyboardIndicators】 1、步骤&#xff1a; 2、知识点&#xff1a; 一、按数字键盘左上角的按键【NumLK Scroll】 这是最简单快捷的方法。 关闭后若想开启&#xff0c;再按一…...

如何在Bash中等待多个子进程完成,并且当其中任何一个子进程以非零退出状态结束时,使主进程也返回一个非零的退出码?

文章目录 问题回答参考 问题 如何在 Bash 脚本中等待该脚本启动的多个子进程完成&#xff0c;并且当这其中任意一个子进程以非零退出码结束时&#xff0c;让该脚本也返回一个非零的退出码&#xff1f; 简单的脚本: #!/bin/bash for i in seq 0 9; docalculations $i & d…...

Asio2网络库

header only,不依赖boost库,不需要单独编译,在工程的Include目录中添加asio2路径,在源码中#include <asio2/asio2.hpp>即可使用;支持tcp, udp, http, websocket, rpc, ssl, icmp, serial_port;支持可靠UDP(基于KCP),支持SSL;TCP支持各种数据拆包功能(单个字符或字符串或用…...

Uniapp 微信小程序内打开web网页

技术栈&#xff1a;Uniapp Vue3 简介 实际业务中有时候会需要在本微信小程序内打开web页面&#xff0c;这时候可以封装一个路由页面专门用于此场景。 在路由跳转的时候携带路由参数&#xff0c;拼接上web url&#xff0c;接收页面进行参数接收即可。 实现 webview页面 新…...

学习线性表_3

单链表的删除 直接删除即可删除后要free //删除第i个位置的元素 //删除时L是不会变的&#xff0c;所以不需要加引用 bool ListDelect(LinkList L,int i) {//i 1,即删除头指针//拿到要删除结点的前一个结点LinkList p GetElem(L,i-1);if(NULLp){return false;}//拿到要删除的结…...

智能桥梁安全运行监测系统守护桥梁安全卫士

一、方案背景 桥梁作为交通基础设施中不可或缺的重要组成部分&#xff0c;其安全稳定的运行直接关联到广大人民群众的生命财产安全以及整个社会的稳定与和谐。桥梁不仅是连接两地的通道&#xff0c;更是经济发展和社会进步的重要纽带。为了确保桥梁的安全运行&#xff0c;桥梁安…...

Arrays.asList()新增报错,该怎么解决

一、前言 在 Java 开发中&#xff0c;Arrays.asList() 是一个常用的工具方法&#xff0c;它允许开发者快速将数组转换为列表。尽管这个方法非常方便&#xff0c;但许多开发者在使用时可能会遭遇一个常见的错误&#xff1a;尝试向由 Arrays.asList() 返回的列表中添加元素时抛出…...

28.UE5实现对话系统

目录 1.对话结构的设计&#xff08;重点&#xff09; 2.NPC对话接口的实现 2.1创建类型为pawn的蓝图 2.2创建对话接口 3.对话组件的创建 4.对话的UI设计 4.1UI_对话内容 4.2UI_对话选项 4.3UI_对话选项框 5.对话组件的逻辑实现 通过组件蓝图&#xff0c;也就是下图中的…...

会议直击|美格智能亮相2024紫光展锐全球合作伙伴大会,融合5G+AI共拓全球市场

11月26日&#xff0c;2024紫光展锐全球合作伙伴大会在上海举办&#xff0c;作为紫光展锐年度盛会&#xff0c;吸引来自全球的众多合作伙伴和行业专家、学者共同参与。美格智能与紫光展锐竭诚合作多年&#xff0c;共同面向5G、AI和卫星通信为代表的前沿科技&#xff0c;聚焦技术…...

IDEA报错: java: JPS incremental annotation processing is disabled 解决

起因 换了个电脑打开了之前某个老项目IDEA启动springcloud其中某个服务直接报错&#xff0c;信息如下 java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process “jps.track.ap.depen…...

面对深度伪造:OWASP发布专业应对指南

从美国大选造谣视频到AI编写的网络钓鱼邮件&#xff0c;深度伪造&#xff08;deepfake&#xff09;诈骗和生成式人工智能攻击日益猖獗&#xff0c;人眼越来越难以辨识&#xff0c;企业迫切需要为网络安全团队制定AI安全事件响应指南。 深度伪造攻击威胁日益增加 全球范围内&…...

IDEA全局设置-解决maven加载过慢的问题

一、IDEA全局设置 注意&#xff1a;如果不是全局设置&#xff0c;仅仅针对某个项目有效&#xff1b;例在利用网上教程解决maven加载过慢的问题时&#xff0c;按步骤设置却得不到解决&#xff0c;原因就是没有在全局设置。 1.如何进行全局设置 a.在项目页面&#xff0c;点击f…...

【阅读笔记】Android广播的处理流程

关于Android的解析&#xff0c;有很多优质内容&#xff0c;看了后记录一下阅读笔记&#xff0c;也是一种有意义的事情&#xff0c; 今天就看看“那个写代码的”这位大佬关于广播的梳理&#xff0c; https://blog.csdn.net/a572423926/category_11509429.html https://blog.c…...

queue 和 Stack

import scala.collection.mutable //queue:队列.排队打饭.... //特点&#xff1a;先进先出 //Stack:栈 //特点&#xff1a;先进后出 class ob5 { def main(args: Array[String]): Unit { val q1 mutable.Queue(1) q1.enqueue(2)//入队 q1.enqueue(3)//入队 q1.enqueue(4)…...

C#窗体小程序计算器

使其能完成2个数的加、减、乘、除基本运算。界面如下图&#xff0c;单击相应的运算符按钮&#xff0c;则完成相应的运算&#xff0c;并将结果显示出来&#xff0c;同时不允许在结果栏中输入内容 代码如下&#xff1a; private void button1_Click(object sender, EventArgs e)…...

Linux——自定义简单shell

shell 自定义shell目标普通命令和内建命令&#xff08;补充&#xff09; shell实现实现原理实现代码 自定义shell 目标 能处理普通命令能处理内建命令要能帮助我们理解内建命令/本地变量/环境变量这些概念理解shell的运行 普通命令和内建命令&#xff08;补充&#xff09; …...

大模型开发和微调工具Llama-Factory-->WebUI

WebUI LLaMA-Factory 支持通过 WebUI 零代码微调大模型。 通过如下指令进入 WebUI llamafactory-cli webui# 如果是国内&#xff0c; # USE_MODELSCOPE_HUB 设为 1&#xff0c;表示模型从 ModelScope 魔搭社区下载。 # 避免从 HuggingFace 下载模型导致网速不畅 USE_MODELSC…...

【网络】应用层协议HTTPHTTPcookie与sessionHTTPS协议原理

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;计算机网络原理_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.应用层协议HTTP 2.认识 URL 2.1 urlencode 和 urldecode 3.HTTP 协议请求与响应格式 3.1 HTTP 请求 3.2 HTTP 响应 …...

基于LSTM的文本多分类任务

概述&#xff1a; LSTM&#xff08;Long Short-Term Memory&#xff0c;长短时记忆&#xff09;模型是一种特殊的循环神经网络&#xff08;RNN&#xff09;架构&#xff0c;由Hochreiter和Schmidhuber于1997年提出。LSTM被设计来解决标准RNN在处理序列数据时遇到的长期依赖问题…...

Git忽略文件

在Git中&#xff0c;你可以通过修改 .gitignore 文件来忽略整个文件夹。以下是具体步骤&#xff1a; 打开或创建 .gitignore 文件 确保你的项目根目录下有一个 .gitignore 文件。如果没有&#xff0c;创建一个&#xff1a; touch .gitignore 在 .gitignore 文件中添加要忽略…...

Spring的事务管理

tx标签用于配置事务管理用于声明和配置事务的相关属性 transaction-manager指定一个事务管理器的引用&#xff0c;用于管理事务的生命周期。propagation指定事务的传播属性&#xff0c;决定了在嵌套事务中如何处理事务。isolation指定事务的隔离级别&#xff0c;用于控制事务之…...

java int值可以直接赋值给char类型 详解

在 Java 中&#xff0c;int 值可以直接赋值给 char 类型&#xff0c;但有一定的限制和机制。以下是详细的解释&#xff1a; 1. Java 中的 char 和 int 类型关系 char 的本质 char 是一个 16 位无符号整数类型&#xff0c;用于表示 Unicode 字符。范围为 0 到 65535&#xff0…...