C语言单链表、双链表专题及应用
1.链表的概念及结构
概念:链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的
链表的结构跟火车车厢相似,淡季时车次的车厢会相应减少,旺季时车次的车厢会额外增加几节,只需要将火车里的节车厢去掉/加上,不会影响其他车厢,每节车厢都是独立存在的
车厢是独立存在的,且每节车厢都有车门,想象一下这样的场景,假设每节车厢的车门都是锁上的状态 需要不同的钥匙才能解锁,每次只能携带一把钥匙的情况下如何从车头走到车尾
最简单的做法:每节车厢里都放一把下一节车厢的钥匙
在链表里,每节“车厢”是什么样的呢
与顺序表不同的是,链表里的每节“车厢”都是独立申请下来的空间,我们称之为“结点/节点”
节点的组成主要有两个部分:当前节点要保存的数据和保存下一个节点的地址(指针变量)
图中指针变量plist保存的是第一个节点的地址,称plist此时“指向”第一个节点,如果我们希望plist“指向”第二个节点时,只需要修改plist保存的内容为0x0012FFA0
为什么需要指针变量来保存下一个节点的位置
链表中每个节点都是独立申请的(即需要插入数据时才去申请一块节点的空间),我们需要通过指针变量来保存下一个节点位置才能从当前节点找到下一个节点
假设当前保存的节点为整形型,每个节点对应的结构体代码
struct SListNode
{int data; //节点数据struct SListNode* next; //指针变量⽤保存下⼀个节点的地址
};
当想要保存一个整型数据时,实际是向操作系统申请了一块内存,这个内存不仅要保存整形型数据,也需要保存下一个节点的地址(当下一个节点为空时保存的地址为空)
当想要从第一个节点走到最后一个节点时,只需要在前一个节点拿上下一个节点的地址(下一个节点的钥匙)就可以
给定的链表结构中,如何实现节点从头到尾的打印
思考:当我们想保存的数据类型为字符型、浮点型或者其他⾃定义的类型时,该如何修改?
补:
1.链式结构在逻辑上是连续的,在物理结构上不一定连续
2.节点一般是从堆上申请的
3.从堆上申请来的空间,是按照一定策略分配出来的,每次申请的空间可能连续,可能不连续
2.单链表实现
typedef int SLTDataType;
typedef struct SListNode
{SLTDataType data; //节点数据struct SListNode* next; //指针保存下⼀个节点的地址
}SLTNode;
void SLTPrint(SLTNode* phead);
//头部插⼊删除/尾部插⼊删除
void SLTPushBack(SLTNode** pphead, SLTDataType x);
void SLTPushFront(SLTNode** pphead, SLTDataType x);
void SLTPopBack(SLTNode** pphead);
void SLTPopFront(SLTNode** pphead);
//查找
SLTNode* SLTFind(SLTNode* phead, SLTDataType x);
//在指定位置之前插⼊数据
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);
//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos);
//在指定位置之后插⼊数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x);
//删除pos之后的节点
void SLTEraseAfter(SLTNode* pos);
//销毁链表
void SListDesTroy(SLTNode** pphead);
基于数据结构-单链表 实现通讯录项⽬
3.链表的分类
链表的结构非常多样,以下情况组合起来就有8种(222)链表结构
说明:
虽然有这么多的链表的结构,但是实际上最常用还是两种结构:单链表和双向带头循环链表
1.无头单向非循环链表:结构简单,一般不会单独用来存数据,实际中更多是作为其他数据结构的子结构,如哈希桶,图的邻接表等,在笔试面试中出现较多
2.带头双向循环链表:结构最复杂,一般用在单独存储数据,实际中使用的链表数据结构,都是带头双向循环链表,另外这个结构虽然结构存复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单
4.单链表经典算法
1.链表经典算法oj题目
1.1单链表相关经典算法oj题1:移除链表元素
1.2单链表相关经典算法oj题2:反转链表
1.3单链表相关经典算法oj题3:合并两个有序链表
1.4单链表相关经典算法oj.题4:链表的中间节点
1.5循环链表经典应用-环形链表的约瑟夫问题:环形约瑟夫问题
著名的Josephus问题
据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到⼀个洞中,39个犹太人决定宁愿死也不要被⼈抓到,于是决定了⼀个自杀方式,41个人排成⼀个圆圈,由第1个人开始报数,每报数到第3⼈该⼈就必须自杀,然后再由下⼀个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
1.6单链表相关经典算法oj题5:分割链表
5.基于单链表再实现通讯录项目
//SList.h
//
// Created by mm on 2023/6/13.
//
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"contact.h"typedef struct PersonInfo SLTDataType;
//typedef int SLTDataType;void SLTPrint(SLTNode* phead);//头部插⼊删除/尾部插⼊删除
void SLTPushBack(SLTNode** pphead, SLTDataType x);
void SLTPushFront(SLTNode** pphead, SLTDataType x);
void SLTPopBack(SLTNode** pphead);
void SLTPopFront(SLTNode** pphead);//查找
SLTNode* SLTFind(SLTNode* phead, SLTDataType x);
//在指定位置之前插⼊数据
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);
//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos);
//在指定位置之后插⼊数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x);
//删除pos之后的节点
void SLTEraseAfter(SLTNode* pos);
//销毁链表
void SListDesTroy(SLTNode** pphead);
//contact.h
#pragma once
#define NAME_MAX 100
#define SEX_MAX 4
#define TEL_MAX 11
#define ADDR_MAX 100//前置声明
typedef struct SListNode contact;//⽤⼾数据
typedef struct PersonInfo
{char name[NAME_MAX];char sex[SEX_MAX];int age;
char tel[TEL_MAX];
char addr[ADDR_MAX];
}PeoInfo;//初始化通讯录
void InitContact(contact** con);
//添加通讯录数据
void AddContact(contact** con);
//删除通讯录数据
void DelContact(contact** con);
//展⽰通讯录数据
void ShowContact(contact* con);
//查找通讯录数据
void FindContact(contact* con);
//修改通讯录数据
void ModifyContact(contact** con);
//销毁通讯录数据
void DestroyContact(contact** con);
//contact.c
#define _CRT_SECURE_NO_WARNINGS
#include"contact.h"
#include"SList.h"void LoadContact(contact** con) {
FILE* pf = fopen("contact.txt", "rb");if (pf == NULL) {perror("fopen error!\n");return;
}//循环读取⽂件数据PeoInfo info;while (fread(&info, sizeof(info), 1, pf)){SLTPushBack(con, info);}printf("历史数据导⼊通讯录成功!\n");}void InitContact(contact** con) {LoadContact(con);
}void AddContact(contact** con) {PeoInfo info;printf("请输⼊姓名:\n");scanf("%s", &info.name);printf("请输⼊性别:\n");scanf("%s", &info.sex);printf("请输⼊年龄:\n");scanf("%d", &info.age);printf("请输⼊联系电话:\n");scanf("%s", &info.tel);printf("请输⼊地址:\n");scanf("%s", &info.addr);SLTPushBack(con, info);printf("插⼊成功!\n");}contact* FindByName(contact* con, char name[]) {contact* cur = con;while (cur){if (strcmp(cur->data.name, name) == 0) {return cur;}cur = cur->next;}return NULL;}void DelContact(contact** con) {char name[NAME_MAX];printf("请输⼊要删除的⽤⼾姓名:\n");scanf("%s", name);contact* pos = FindByName(*con, name);if (pos == NULL) {printf("要删除的⽤⼾不存在,删除失败!\n");return;}SLTErase(con, pos);printf("删除成功!\n");}void ShowContact(contact* con) {printf("%-10s %-4s %-4s %15s %-20s\n", "姓名", "性别", "年龄", "联系电话",contact * cur = con;while (cur){printf("%-10s %-4s %-4d %15s %-20s\n",cur->data.name,cur->data.sex,cur->data.age,cur->data.tel,cur->data.addr);cur = cur->next;}}void FindContact(contact* con) {char name[NAME_MAX];printf("请输⼊要查找的⽤⼾姓名:\n");scanf("%s", name);contact* pos = FindByName(con, name);if (pos == NULL) {printf("要查找的⽤⼾不存在,查找失败!\n");return;}printf("查找成功!\n");printf("%-10s %-4s %-4d %15s %-20s\n",pos->data.name,pos->data.sex,pos->data.age,pos->data.tel,pos->data.addr);}void ModifyContact(contact** con) {char name[NAME_MAX];printf("请输⼊要修改的⽤⼾名称:\n");scanf("%s", &name);contact* pos = FindByName(*con, name);if (pos == NULL) {printf("要查找的⽤⼾不存在,修改失败!\n");return;}printf("请输⼊要修改的姓名:\n");scanf("%s", pos->data.name);printf("请输⼊要修改的性别:\n");scanf("%s", pos->data.sex);printf("请输⼊要修改的年龄:\n");scanf("%d", &pos->data.age);printf("请输⼊要修改的联系电话:\n");scanf("%s", pos->data.tel);printf("请输⼊要修改的地址:\n");scanf("%s", pos->data.addr);printf("修改成功!\n");}void SaveContact(contact* con) {FILE* pf = fopen("contact.txt", "wb");if (pf == NULL) {perror("fopen error!\n");return;}//将通讯录数据写⼊⽂件contact* cur = con;while (cur){fwrite(&(cur->data), sizeof(cur->data), 1, pf);cur = cur->next;}printf("通讯录数据保存成功!\n");}void DestroyContact(contact** con) {SaveContact(*con);SListDesTroy(con);}
6.双向链表的结构
注:这里的“带头”跟“头节点”是两个概念
带头链表里的头节点,实际是“哨兵位”,哨兵位节点不存储任何有效元素,只是“放哨”
“哨兵位”存在的意义
遍历循环链表避免死循环
7.双性链表的实现
typedef int LTDataType;
typedef struct ListNode
{struct ListNode* next; //指针保存下⼀个节点的地址struct ListNode* prev; //指针保存前⼀个节点的地址LTDataType data;
}LTNode;
//void LTInit(LTNode** pphead);
LTNode* LTInit();
void LTDestroy(LTNode* phead);
void LTPrint(LTNode* phead);
bool LTEmpty(LTNode* phead);
void LTPushBack(LTNode* phead, LTDataType x);
void LTPopBack(LTNode* phead);
void LTPushFront(LTNode* phead, LTDataType x);
void LTPopFront(LTNode* phead);
//在pos位置之后插⼊数据
void LTInsert(LTNode* pos, LTDataType x);
void LTErase(LTNode* pos);
LTNode *LTFind(LTNode* phead,LTDataType x);
8.顺序表和双向链表的优缺点分析
相关文章:
C语言单链表、双链表专题及应用
1.链表的概念及结构 概念:链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表的结构跟火车车厢相似,淡季时车次的车厢会相应减少,旺季时车次的车厢会额外增…...
C++4--类
目录 1.类的引入 2.类的定义 3.类的访问限定符及封装 3.1访问的限定符 3.2封装 4.类的作用域 5.类的实体化 1.类的引入 C语言结构体中只能定义变量,在C中,结构体内不仅可以定义变量,也可以定义函数。比如:之间在数据结构中&…...
紫光展锐5G融云方案,开启云终端新时代
近年来,云终端凭借便捷、高效、高性价比的优势正逐步在各行各业渗透。研究机构IDC的数据显示,2024上半年,中国云终端市场总体出货量达到166.3万台,同比增长22.4%,销售额29亿元人民币,同比增长24.9%…...
雪泥鸿爪和屈指可数
paw这个单词,表示“爪或手”,是一个和hoof相对的单词: hoof n.(马等动物的)蹄paw n.爪子;(动物的)爪;(人的)手 v.挠,抓;动手动脚 所以,当你理解了 paw 和 hoof 是相对的概念时&…...
C++并发与多线程(高级函数async)
async 在 C 中,async 关键字用于实现异步编程,它允许你定义异步操作,这些操作可以在后台执行,而不会阻塞当前线程。这是 C11 引入的特性,与 std::async 函数和 std::future 类一起使用。与thread函数模板的区别在于as…...
LeetCode 力扣 热题 100道(二十)三数之和(C++)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 如下代码…...
类和对象(4)
大家好,今天来给大家介绍一下this引用,在学习类和对象的时候大家一定有一点疑惑吧,类为什么能知道我们传入的是哪个对象,又是怎么实例化我们的成员的,那么我们便来了解一下。 四.this引用 4.1为什么要有this引用 在…...
php基础:正则表达式
1.正则表达式 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。到目前为止,我们前面所用过的精确(文本)匹配也是一种正则表达式。 在PHP中,正则表达式一般是由正规字…...
Vue3动态表单实现
实现方法:通过<component />标签动实现动态表单渲染 component标签: 在vue中 component 标签用于动态组件标签的渲染。它允许在同一个挂载点上条件渲染不同的组件,通过is属性可以渲染指定的属性 在上面的例子中,通过调用…...
【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析
【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析 在裸聊敲诈、虚假理财诈骗案件类型中,犯罪分子为了能实现更低成本、更快部署应用的目的,其服务器架构多为常见的初始化网站架构,也称为站库同体服务器!也就是说网站应用…...
高数 | 用简单的话讲考研数学知识点(第一集:充分和必要)
目录 一、前言 二、充分和必要 三、基础符号 四、符号拓展 五、符号进阶 六、符号进阶拓展 七、本集总结 一、前言 up最近想去上学,就想考个研究生读一读,那就要复习高数,光复习挺没意思的,所以就想着边复习边写文章吧&…...
前端学习-操作元素内容(二十二)
目录 前言 目标 对象.innerText 属性 对象.innerHTML属性 案例 年会抽奖 需求 方法一 方法二 总结 前言 曾经沧海难为水,除却巫山不是云。 目标 能够修改元素的文本更换内容 DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象,…...
PostgreSql-学习06-libpq之同步命令处理
目录 一、环境 二、介绍 三、函数 1、PQsetdbLogin (1)作用 (2)声明 (3)参数介绍 (4)检测成功与否 2、PQfinish (1)作用 (2࿰…...
Python `str.strip()` 的高级用法详解
Python str.strip 的高级用法详解 1. str.strip() 的基本用法2. str.strip() 的高级用法2.1 移除指定字符2.2 移除多个指定字符2.3 移除换行符和制表符2.4 结合正则表达式的高级处理 3. lstrip() 和 rstrip() 的用法3.1 lstrip():移除左端字符3.2 rstrip()ÿ…...
Vue 3 中的 `update:modelValue` 事件详解
在 Vue 3 中,update:modelValue 事件通常与 v-model 指令一起使用,以实现自定义组件的双向数据绑定。以下是对该事件的详细分析: 事件定义 首先,我们需要在组件中定义 update:modelValue 事件。可以使用 defineEmits 函…...
AI 助力医学伦理知情同意书的完善:守护受试者权益
在医学研究中,知情同意书是保障受试者权益的核心文件,其质量直接关系到研究的伦理合规性。一份完善的知情同意书应清晰、准确且全面地向受试者传达研究的关键信息,确保他们在充分理解的基础上自愿做出参与决策。然而,在实际撰写过…...
【信息系统项目管理师-论文真题】2017上半年论文详解(包括解题思路和写作要点)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一:论信息系统项目的范围管理解题思路写作要点试题二:论项目采购管理解题思路写作要点试题一:论信息系统项目的范围管理 实施项目范围管理的目的是包括确保项目做且制作所需的全部工作,以顺利完成项目…...
rpc设计的再次思考20251215(以xdb为核心构建游戏框架)
1.服务提供者注册的方式 // 表明这是一个服务提供者,ServerType 和 ServerId从application.properties中读取 // 而且只有当当前服务是Game时,才生效。 或者 条件注解??? RpcProvider(typeServerType.Game) public class GameProvider{MsgReceiver…...
mysql 查看并设置 innodb_flush_log_at_trx_commit 参数
mysql 查看并设置 innodb_flush_log_at_trx_commit 参数 innodb_flush_log_at_trx_commit 是 MySQL 中的一个系统变量,用于控制 InnoDB 存储引擎的日志刷新行为。该变量有三个可选的值: 0:每隔一秒钟,日志缓冲被刷新到日志文件&a…...
spring使用rabbitmq当rabbitmq集群节点挂掉 spring rabbitmq怎么保证高可用,rabbitmq网络怎么重新连接
##spring rabbitmq代码示例 Controller代码 import com.alibaba.fastjson.JSONObject; import com.newland.mi.config.RabbitDMMQConfig; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageProperties; import org.springframewo…...
Java BigDecimal
1. BigDecimal 用于解决浮点型运算时,出现结果失真的问题。 2. BigDecimal创建的构造器、常用方法 构造器说明public BigDecimal(double val)---不推荐将double 类型转为BigDecimalpublic BigDecimal(String val)---推荐将String 类型转为BigDecimal 方法说明pub…...
RFMiD:多疾病检测的视网膜图像分析挑战|文献速递-生成式模型与transformer在医学影像中的应用
Title 题目 RFMiD: Retinal Image Analysis for multi-Disease Detection challenge RFMiD:多疾病检测的视网膜图像分析挑战 01 文献速递介绍 眼部疾病的普遍性与上升趋势 根据世界卫生组织 (WHO) 2019 年《全球视觉报告》,目前全球约有 22 亿人存…...
布隆过滤器
这篇博客我们来说一下布隆过滤器 之前我们在讲redis缓存穿透的时候说可以使用布隆过滤器来解决这个问题 那么我们先来简单复习一下什么时缓存穿透 (一)复习缓存穿透 我们都知道redis可以作为mysql的缓存帮忙抵挡大部分的请求,但是当redis中…...
构建一个rust生产应用读书笔记四(实战6)
本节我们开始使用tracing来记录日志,实际上在生产环境中,更推荐使用tracing作为日志记录的首先,它提供了更丰富的上下文信息和结构化日志记录功能。tracing 不仅可以记录日志信息,还可以跟踪函数调用、异步任务等,适用…...
如何使用git新建本地仓库并关联远程仓库的步骤(详细易懂)
一、新建本地仓库并关联远程仓库的步骤 新建本地仓库 打开终端(在 Windows 上是命令提示符或 PowerShell,在 Linux 和Mac上是终端应用),进入你想要创建仓库的目录。例如,如果你想在桌面上创建一个名为 “my - project”…...
5.最长回文字串
给你一个字符串 s,找到 s 中最长的 回文 子串 。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s "cbbd"…...
数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)
Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…...
【C++】13___STL
一、基本概念 STL(Standard Template Library,标准模板库)STL从广义上分为:容器(container)、算法(algorithm)、迭代器(iterator)容器和算法之间通过迭代器进行无缝连接STL几乎所有的代码都采用了类模板或者函数模板 二、STL六大组件 分别是:容器、算法…...
在 Ubuntu 中启用 root 用户的远程登录权限
1. 概述:为什么需要启用 root 用户远程登录? 在 Ubuntu 中,出于安全原因,默认情况下 root 用户被禁止远程登录。然而,在某些情况下(如需要进行高权限操作的远程管理任务),启用 root…...
android 混淆
前沿 很久没用过混淆功能了,因为之前的包都使用第三方加固了,而且项目开发好几年了,突然要混淆也很麻烦。换了家公司后,感觉还是得混淆代码才行,不然直接暴露源码也太不行了。 启动混淆功能 isMinifyEnabled true …...
6、AI测试辅助-测试报告编写(生成Bug分析柱状图)
AI测试辅助-测试报告编写(生成Bug分析柱状图) 一、测试报告1. 创建测试报告2. 报告补充优化2.1 Bug图表分析 3. 风险评估 总结 一、测试报告 测试报告内容应该包含: 1、测试结论 2、测试执行情况 3、测试bug结果分析 4、风险评估 5、改进措施…...
让人工智能帮我写一个矩阵按键扫描程序
1.前言 嘉立创做了一块编程小车的蓝牙按键遥控器,按键是4*4矩阵的,通过蓝牙发送按键编码值给蓝牙小车(外围设备)。 原理图如下: 板子回来后,因为懒得写按键矩阵扫描程序,想想还是交给人工智能…...
基于MindSpore NLP的PEFT微调
创建notebook 登录控制台 创建notebook 如果出现提示按如下操作 回到列表页面创建notebook参数如下: 配置mindnlp环境 打开GitHub - mindspore-lab/mindnlp: Easy-to-use and high-performance NLP and LLM framework based on MindSpore, compatible with model…...
2024年12月CCF-GESP编程能力等级认证C++编程八级真题解析
本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 小杨家响应国家“以旧换新”政策,将自家的汽油车置换为新能源汽车,正在准备自编车牌。自编车牌包括5位数字或英文字母,要求…...
基于微信小程序的小区疫情防控ssm+论文源码调试讲解
第2章 程序开发技术 2.1 Mysql数据库 为了更容易理解Mysql数据库,接下来就对其具备的主要特征进行描述。 (1)首选Mysql数据库也是为了节省开发资金,因为网络上对Mysql的源码都已进行了公开展示,开发者根据程序开发需…...
moment()获取时间
moment 是一个 JavaScript 日期处理类库。 使用: //安装 moment npm install moment -- save引用 //在main.js中全局引入 import moment from "moment"设定moment区域为中国 //import 方式 import moment/locale/zh-cn moment.locale(zh-cn); 挂载全…...
CAD学习 day3
细节问题 快捷键X 分解单独进行操作如果需要制定字体样式选择 gdcbig.shx快捷键AA 算面积 平面布置图 客户沟通 - 会面笔记 - 客户需求(几个人居住、生活方式、功能需求(电竞房、家政柜)、书房、佛龛、儿童房、风格方向)根据客户需求 - 平面方案布置 (建议做三个以上方案) -…...
windows免登录linux
windows 生成秘钥文件 ssh-keygen -t rsa 将公钥传送到服务器 scp C:\Users\xx/.ssh/id_rsa.pub xxxx:/home/ruoyi/id_rsa.pub linux 使用ssh-copy-id -i ~/.ssh/id_rsa.pub userhost 如果禁用root登录,先开启 vim /etc/ssh/sshd_config PermitRootLogin yes …...
边缘计算的方式
做边缘计算这个行业要想赚得到收益,那一定要找到适合自己参与的一种方式。目前参与边缘计算的话,它主要有两个渠道。 第一个就是用盒子来跑,这个盒子的话包括光猫、路由器、摄像头等等,盒子是一条网线带动一个盒子,它…...
Android GO 版本锁屏声音无效问题
问题描述 Android go版本 在设置中打开锁屏音开关,息屏灭屏还是无声音 排查 vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\keyguard\KeyguardViewMediator.java private void setupLocked() {...String soundPath Settings.G…...
Android之RecyclerView显示数据列表和网格
一、RecyclerView的优势 RecyclerView 的最大优势在于,它对大型列表来说非常高效: 默认情况下,RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如,如果您的列表包含一千个元素,但只有 10 个元素可见࿰…...
汽车发动机电控系统-【传感器】篇
燃油:喷油控制(不多不少) 进气 主传感器MAP:进气压力传感器(微型车)、空气流量传感器MAF 辅助传感器:节气门传感器、水温传感器(提供暖机工况)、进气温度传感器 反馈…...
牛客周赛 Round 72 题解
本次牛客最后一个线段树之前我也没碰到过,等后续复习到线段树再把那个题当例题发出来 小红的01串(一) 思路:正常模拟,从前往后遍历一遍去统计即可 #include<bits/stdc.h> using namespace std; #define int lo…...
Python AI后台服务器
把数据训练放在后台,首先碰到的一个问题是如何高效地从数据库把数据请求下来。 分别试了几个库 modin 号称和pandas能够无缝衔接,试了下,确实pd.read_sql蛮快的,但是下来后数据格式就变了,不太好进行后续处理了conne…...
音视频入门基础:MPEG2-TS专题(19)——FFmpeg源码中,解析TS流中的PES流的实现
一、引言 FFmpeg源码在解析完PMT表后,会得到该节目包含的视频和音频信息,从而找到音视频流。TS流的音视频流包含在PES流中。FFmpeg源码通过调用函数指针tss->u.pes_filter.pes_cb指向的回调函数解析PES流的PES packet: /* handle one TS…...
Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用
Part1: Summary 项目中我们常用到命名,使用 enum 转成 string ,方便简洁;Qt给我们提供了一个很方便的功能 Q_ENUM,可以实现枚举字符串互转; Q_ENUM宏将枚举注册到元对象系统中; QMetaEnum::fromType获取枚…...
Mac配置 Node镜像源的时候报错解决办法
在Mac电脑中配置国内镜像源的时候报错,提示权限问题,无法写入配置文件。本文提供解决方法,青测有效。 一、原因分析 遇到的错误是由于 .npm 目录下的文件被 root 用户所拥有,导致当前用户无法写入相关配置文件。 二、解决办法 在终端输入以下命令,输入管理员密码即可。 su…...
windows C#-为枚举创建新方法
可使用扩展方法添加特定于某个特定枚举类型的功能。 示例 在下面的示例中,Grades 枚举表示学生可能在班里收到的字母等级分。 该示例将一个名为 Passing 的扩展方法添加到 Grades 类型中,以便该类型的每个实例现在都“知道”它是否表示合格的等级分。 …...
ISCTF复现-misc
File_Format 下载附件后用010打开查看文件头会发现是个exe文件 格式:文件描述(后缀名),文件头(hex):文件头标识(十六进制)PNG (png),文件头(hex):89504E47 PNGImageFile…...
知道一个服务器IP地址如果attack服务器地址
CSDN提醒:亲爱的用户:你好! 你的账号于2024-12-17 19:04:04在美国美国登录,登录IP为:47.238.159.124。若非本人登录,请及时修改密码。 莫名其妙显示美国登录了我的CSDN博客 卧槽 服务器的IP地址是一个用于…...