单链表Single-LinkList
0、节点结构体定义
typedef struct LNode{int data;struct LNode *next;} Lnode, *LinkList;
1、初始化
bool InitList(LinkList &L) //初始化
{L = new LNode;if(!L){return false;}L->next = NULL;return true;
}
2、创建
(1)头插法
void CreateList_H(LinkList &L, int n) //头插法创建
{LinkList s;while(n--){ //--n不行!! s = new LNode;cin>> s->data;s->next = L->next; //链表的i++ L->next =s; }
}
//反复利用链表头L和新节点s添加(就是插入...)
(2)尾插法
void CreateList_R(LinkList &L, int n) //尾插法创建
{LinkList s, r = L;while(--n){s = new LNode;cin>> s->data;r->next = s; //链表的i++s->next = NULL;r = s;}
}
//利用r存储当前节点信息,便利于新节点s的添加
3、查找
(1)查找具体元素
bool Finde(LinkList &L, int e) //查找具体元素
{LinkList p = L->next;while(p != NULL && p->data != e){p = p->next;}if(!p){return false;}return true;
}
(2)查找第 i 个元素
bool GetElemi(LinkList &L, int i, int &e) //查找第i个元素
{int j = 1; //记不住就初始化为 j = 1、p = L LinkList p = L->next; //因为后面都是这样(保对),而且也没增加什么时间 while(p && j<i){p = p->next;++j;}if(!p || j>i){ //i值不合法:i>n || i<0 return false;}e = p->data; //用e记录元素i return true;
}
4、插入
bool ListInsert(LinkList &L, int i, int e) //在第i个元素后插入元素
{int j = 0;LinkList p = L; //保证能在第一个元素前插入 while(p && j<i){p = p->next;++j;}if(!p || j>i){return false;}//上面就是查找操作... LinkList s = new LNode;s->data = e;s->next = p->next;p->next = s;return true;
}
5、删除
bool ListDelete(LinkList &L, int i) //删除第i个元素
{int j = 0;LinkList p = L; //保证能删除第 1个元素 while(p && j<i-1){p = p->next;++j;}if(!p ||j>i-1){return false;}//上面还是查找操作...(找第元素i-1)LinkList q = p->next; //使用临时变量更安全!(p->next->next = p->next; delete p->next; p->next = q->next; //当n=2时会出错!因为要删除的p->next已经变成NULL了!) delete q;return true;
}
6、释放内存
bool ListRelese(LinkList &L)
{LinkList p;while(L){p = L; //暂存当前节点 L = L->next; //更新为下一节点 delete p; //删除当前节点 /*这样也ok: **p = L->next;// 暂存下一个节点**delete L;// 删除当前节点**L = p;// 更新当前节点为下一个节点*/}return true;
}
7、其他操作
(1)查找中间元素
LinkList FindMid(LinkList L) //查找中间的节点
{ //不会修改L就不用传引用!LinkList p = L, q = L;while(p){q = q->next;p = p->next->next;}return q;
}
(2)查找倒数第 k 个节点
LinkList Findk(LinkList L, int k) //查找倒数第k个节点
{LinkList p, q;p=L->next; q=L->next; while(p->next!=NULL){if(--k<=0) //k减到0时,慢指针开始走q=q->next; p=p->next; //p为快指针,先走k-1步}if(k>0)return NULL;elsereturn q;
}
(3)合并有序链表
/合并有序链表:将两个有序(非递减)单链表La和Lb合并为一个新的有序(非递减)单链表Lc
LinkList ListMerge(LinkList LA, LinkList LB)
{LinkList p = LA->next ,q = LB->next; LinkList LC = LA, r = LC;while(p && q){if(p->data > q->data){r->next = q;r = q;q = q->next;}else{r->next = p;r = p;p = p->next;}}r->next = p? p:q;delete LB;return LC;
}
(4)逆转链表
void ListReverse(LinkList &L) //逆转单链表
{LinkList p = L->next, q;L->next = NULL;while(p){q = p->next;p->next = L->next;L->next = p;p = q;}
}
相关文章:
单链表Single-LinkList
0、节点结构体定义 typedef struct LNode{int data;struct LNode *next;} Lnode, *LinkList; 1、初始化 bool InitList(LinkList &L) //初始化 {L new LNode;if(!L){return false;}L->next NULL;return true; } 2、创建 (1)头插法 void Cr…...
AI嵌入式全景:各厂商、系列和开发工具的综合概览
要看几个方面 1 算力: 2 支持何种模型: 3 是否支持可视化的窗口系统: 一般而言各个平台均采用linux操作系统,官方提供对应SDK,安装好后可使用硬件加速资源。 而且如果要使用其硬件加速,一般都要完成模型转…...
mysql Left Join on条件 where条件的用法区别
数据准备 SELECT t1.id,t1.name,t2.local FROM t1 LEFT JOIN t2 ON t1.idt2.id; 执行结果 SELECT t1.id,t1.name,t2.local FROM t1 LEFT JOIN t2 ON t1.idt2.id and t2.localbeijing; SELECT t1.id,t1.name,t2.local FROM t1 LEFT JOIN t2 ON t1.idt2.id where t2.localbeijing…...
Redis中的淘汰策略
前言 本文主要说明在Redis面临key过期和内存不足的情况时,可以采用什么策略进行解决问题。 Redis中是如何应对过期数据的 正如我们知道的Redis是基于内存的、单线程的一个中间件,在面对过期数据的时候,Redis并不会去直接把它从内存中进行剔…...
MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射,让你在面试中脱颖而出!!
目录 一、引言 二、MyBatis动态SQL 2.1.if元素使用 2.2.foreach元素使用 三、MyBatis模糊查询 ①使用#{字段名} ②使用${字段名} ③使用concat{%,#{字段名},%} 总结 四、MyBatis结果映射 4.1.案例演示 4.1.1.resultType进行结果映射 4.1.2.resultMap进行结果映射 …...
C++ 写入txt文件内容并追加内容
咨询通义千问的“C 写入txt文件内容并追加内容”: 可以使用ofstream类来写入txt文件内容。若想追加内容,可以使用ios::app标志来创建输出流对象,然后在写入时将其设置为ios::app。以下是一个示例代码: #include <iostream>…...
Leetcode---359周赛
题目列表 2828. 判别首字母缩略词 2829. k-avoiding 数组的最小总和 2830. 销售利润最大化 2831. 找出最长等值子数组 一、判断首字母缩略词 纯模拟,代码如下 class Solution { public:bool isAcronym(vector<string>& words, string s) {string tmp…...
Keras三种主流模型构建方式:序列模型、函数模型、子类模型开发实践,以真实烟雾识别场景数据为例
Keras和PyTorch是两个常用的深度学习框架,它们都提供了用于构建和训练神经网络的高级API。 Keras: Keras是一个高级神经网络API,可以在多个底层深度学习框架上运行,如TensorFlow和CNTK。以下是Keras的特点和优点: 优点…...
objective-v 获取iPhone系统当前时间字符串适配12小时制和24小时制
我们最开始获取系统当前时间,如下,这种方式存在一个问题,当iPhone关闭了24小时制时,获取的时间格式是:iPhone11上:20230822下午210568760;iPhone7 plus上:2023082240043851 PM&#…...
并查集及其简单应用
文章目录 一.并查集二.并查集的实现三.并查集的基本应用 一.并查集 并查集的逻辑结构:由多颗不相连通的多叉树构成的森林(一个这样的多叉树就是森林的一个连通分量) 并查集的元素(树节点)用0~9的整数表示,并查集可以表示如下: 并查集的物理存储结构:并查集一般采用顺序结构实…...
基于web的服装商城系统java网上购物商店jsp源代码mysql
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于web的服装商城系统 系统有1权限:前台…...
.NET Core发布到IIS
项目介绍 1、开发工具Visual Studio 2017,语言C#,SQL SERVER,WIN10 2、本地IIS,手机上或其他用户在和本地在同一个局域网内访问,同时要把防火墙关掉 3、IIS全名Internet Information Services,用来发布网站 先决条件 安…...
Spring的基本概念
前言 Spring 究竟是什么?其实Spring简单来说就是一个包含众多工具方法的IOC容器。 那么什么是IOC呢? IoC Inversion of Control 翻译成中⽂是“控制反转”的意思. 既然Spring 是⼀个IoC(控制反转)容器,重点还在“容…...
设计模式之原型模式
文章目录 一、介绍二、实现步骤三、案例四、应用五、细胞分裂六、改造细胞分裂逻辑七、总结 一、介绍 原型模式属于创建型设计模式,用于创建重复的对象,且同时又保证了性能。 该设计模式的好处是将对象的创建与调用方分离。 其目的就是**根据一个对象…...
正则表达式在网页处理中的应用四则
正则表达式在网页处理中的应用四则 正则表达式(Regular Expression)为字符串模式匹配提供了一种高效、方便的方法。几乎所有高级语言都提供了对正则表达式的支持,或者提供了现成的代码库供调用。本文以ASP环境中常见的处理任务为例,介绍正则表达式的应用技巧。 一、检验密…...
ping使用方法
文章目录 1、Ping的基础知识2、Ping命令详解3、怎样使用Ping这命令来测试网络连通?4、如何用Ping命令来判断一条链路好坏?5、对Ping后返回信息的分析1.Request timed out2.Destination host Unreachable 1、Ping的基础知识 ping命令相信大家已经再熟悉不…...
“心理健康人工智能产学研创新联盟”揭牌成立|深兰科技
8月14日上午,“2023树洞救援年会”在上海举行,会上举行了“心理健康人工智能产学研创新联盟”的签约和揭牌仪式。“树洞行动救援团”创始人深兰科技科学院智能科学首席科学家、荷兰阿姆斯特丹自由大学人工智能系终身教授黄智生,深兰科技集团创…...
FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」
文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…...
Mybatis-动态sql和分页
目录 一.什么是Mybatis动态分页 二.mybatis中的动态SQL 在BookMaaper.xml中写sql BookMapper BookBiz接口类 BookBizImpl实现接口类 demo测试类 编辑 测试结果 三.mybatis中的模糊查询 mybatis中的#与$有是什么区别 在BookMapper.xml里面建立三个模糊查询 编辑 …...
基于YOLOV8模型的西红柿目标检测系统(PyTorch+Pyside6+YOLOv8模型)
摘要:基于YOLOV8模型的西红柿目标检测系统可用于日常生活中检测与定位西红柿目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…...
VTK三维模型导出实战:STL、OBJ与PLY格式的性能对比与应用场景解析
1. 三维模型导出格式概述 第一次接触三维模型导出时,我被各种文件格式搞得晕头转向。STL、OBJ、PLY这些格式到底有什么区别?为什么有的文件特别大,有的又特别小?经过几个项目的实战,我终于摸清了门道。三维模型导出本质…...
AgentScope Java:阿里开源的多智能体框架,让AI应用开发变得简单
为什么我们需要Agent框架? 如果你开发过AI应用,一定遇到过这些问题: LLM只能生成文本,无法查询数据库、调用API、执行计算多轮对话需要管理上下文,但手动维护消息历史太繁琐复杂的任务需要多步推理,简单的…...
字节Agent开发岗面试血泪史:ReAct框架、IterResearch架构、训练流程全解析,小白必看!收藏!
字节Agent开发岗面试血泪史:ReAct框架、IterResearch架构、训练流程全解析,小白必看!收藏! 文章通过字节Agent开发岗校招面试实例,揭示候选人因缺乏底层逻辑和工程实现细节而失败。详细解析ReAct框架、IterResearch架构…...
技术数据解析 | CALCE圆柱电池数据集:SOC估计的OCV测试基准
1. CALCE圆柱电池数据集的核心价值 CALCE电池数据集由马里兰大学先进生命周期工程中心发布,是目前全球最权威的公开电池测试数据之一。这个数据集最吸引我的地方在于它提供了完整的实验环境记录和标准化的测试流程,这对于电池状态估计算法的开发简直是雪…...
小米平板5 Windows驱动包:让Windows在平板上流畅运行的终极指南
小米平板5 Windows驱动包:让Windows在平板上流畅运行的终极指南 【免费下载链接】MiPad5-Drivers Based on Surface Duo Drivers. 项目地址: https://gitcode.com/gh_mirrors/mi/MiPad5-Drivers 想要在小米平板5上完美运行Windows系统吗?MiPad5-D…...
保姆级教程:用ESPHome给旧ESP8266设备(如NodeMCU V2)刷机,无缝接入Home Assistant
旧ESP8266设备焕新指南:从吃灰到智能家居中枢的完整实战 翻箱倒柜时发现几块落满灰尘的NodeMCU V2开发板?别急着扔掉——这些"过时"的硬件依然能在智能家居系统中大放异彩。本文将带你完成从硬件检测到高级功能集成的全流程改造,让…...
如何快速学习Tinyhttpd:从main函数到完整启动的超精简Web服务器实现指南
如何快速学习Tinyhttpd:从main函数到完整启动的超精简Web服务器实现指南 【免费下载链接】Tinyhttpd Tinyhttpd 是J. David Blackstone在1999年写的一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的…...
Qwen3-4B-Thinking效果展示:递归算法设计、时间复杂度分析与优化建议生成实例
Qwen3-4B-Thinking效果展示:递归算法设计、时间复杂度分析与优化建议生成实例 1. 模型效果惊艳展示:一个会“思考”的代码助手 最近在测试一个特别的文本生成模型——Qwen3-4B-Thinking。这个名字听起来就很有意思,“Thinking”这个词让我很…...
解决unsloth中ptxas版本不兼容导致的RuntimeError: 从CUDA 12.6降级到12.4的实战指南
1. 问题背景与错误分析 最近在Windows平台上使用unsloth框架时,遇到了一个让人头疼的RuntimeError。错误信息显示ptxas编译器报错,错误代码是4294967295。具体表现为ptxas无法处理.version 8.6的指令集,而当前只支持到8.5版本。这个错误通常发…...
实战应用解析:基于快马平台实现openclaw切换模型赋能电商数据爬取与可视化项目
最近在做一个电商数据分析的小项目时,发现不同环节对AI模型的需求差异很大。比如爬虫需要严谨的逻辑,而可视化则需要创意和美观。正好在InsCode(快马)平台上尝试了openclaw切换模型的功能,整个过程特别顺畅,分享下我的实战经验。 …...
