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

单链表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、创建 &#xff08;1&#xff09;头插法 void Cr…...

AI嵌入式全景:各厂商、系列和开发工具的综合概览

要看几个方面 1 算力&#xff1a; 2 支持何种模型&#xff1a; 3 是否支持可视化的窗口系统&#xff1a; 一般而言各个平台均采用linux操作系统&#xff0c;官方提供对应SDK&#xff0c;安装好后可使用硬件加速资源。 而且如果要使用其硬件加速&#xff0c;一般都要完成模型转…...

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过期和内存不足的情况时&#xff0c;可以采用什么策略进行解决问题。 Redis中是如何应对过期数据的 正如我们知道的Redis是基于内存的、单线程的一个中间件&#xff0c;在面对过期数据的时候&#xff0c;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文件内容并追加内容”&#xff1a; 可以使用ofstream类来写入txt文件内容。若想追加内容&#xff0c;可以使用ios::app标志来创建输出流对象&#xff0c;然后在写入时将其设置为ios::app。以下是一个示例代码&#xff1a; #include <iostream>…...

Leetcode---359周赛

题目列表 2828. 判别首字母缩略词 2829. k-avoiding 数组的最小总和 2830. 销售利润最大化 2831. 找出最长等值子数组 一、判断首字母缩略词 纯模拟&#xff0c;代码如下 class Solution { public:bool isAcronym(vector<string>& words, string s) {string tmp…...

Keras三种主流模型构建方式:序列模型、函数模型、子类模型开发实践,以真实烟雾识别场景数据为例

Keras和PyTorch是两个常用的深度学习框架&#xff0c;它们都提供了用于构建和训练神经网络的高级API。 Keras: Keras是一个高级神经网络API&#xff0c;可以在多个底层深度学习框架上运行&#xff0c;如TensorFlow和CNTK。以下是Keras的特点和优点&#xff1a; 优点&#xf…...

objective-v 获取iPhone系统当前时间字符串适配12小时制和24小时制

我们最开始获取系统当前时间&#xff0c;如下&#xff0c;这种方式存在一个问题&#xff0c;当iPhone关闭了24小时制时&#xff0c;获取的时间格式是&#xff1a;iPhone11上&#xff1a;20230822下午210568760&#xff1b;iPhone7 plus上&#xff1a;2023082240043851 PM&#…...

并查集及其简单应用

文章目录 一.并查集二.并查集的实现三.并查集的基本应用 一.并查集 并查集的逻辑结构:由多颗不相连通的多叉树构成的森林(一个这样的多叉树就是森林的一个连通分量) 并查集的元素(树节点)用0~9的整数表示,并查集可以表示如下: 并查集的物理存储结构:并查集一般采用顺序结构实…...

基于web的服装商城系统java网上购物商店jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于web的服装商城系统 系统有1权限&#xff1a;前台…...

.NET Core发布到IIS

项目介绍 1、开发工具Visual Studio 2017&#xff0c;语言C#&#xff0c;SQL SERVER&#xff0c;WIN10 2、本地IIS&#xff0c;手机上或其他用户在和本地在同一个局域网内访问,同时要把防火墙关掉 3、IIS全名Internet Information Services&#xff0c;用来发布网站 先决条件 安…...

Spring的基本概念

前言 Spring 究竟是什么&#xff1f;其实Spring简单来说就是一个包含众多工具方法的IOC容器。 那么什么是IOC呢&#xff1f; IoC Inversion of Control 翻译成中⽂是“控制反转”的意思. 既然Spring 是⼀个IoC&#xff08;控制反转&#xff09;容器&#xff0c;重点还在“容…...

设计模式之原型模式

文章目录 一、介绍二、实现步骤三、案例四、应用五、细胞分裂六、改造细胞分裂逻辑七、总结 一、介绍 原型模式属于创建型设计模式&#xff0c;用于创建重复的对象&#xff0c;且同时又保证了性能。 该设计模式的好处是将对象的创建与调用方分离。 其目的就是**根据一个对象…...

正则表达式在网页处理中的应用四则

正则表达式在网页处理中的应用四则 正则表达式(Regular Expression)为字符串模式匹配提供了一种高效、方便的方法。几乎所有高级语言都提供了对正则表达式的支持,或者提供了现成的代码库供调用。本文以ASP环境中常见的处理任务为例,介绍正则表达式的应用技巧。 一、检验密…...

ping使用方法

文章目录 1、Ping的基础知识2、Ping命令详解3、怎样使用Ping这命令来测试网络连通&#xff1f;4、如何用Ping命令来判断一条链路好坏&#xff1f;5、对Ping后返回信息的分析1.Request timed out2.Destination host Unreachable 1、Ping的基础知识 ping命令相信大家已经再熟悉不…...

“心理健康人工智能产学研创新联盟”揭牌成立|深兰科技

8月14日上午&#xff0c;“2023树洞救援年会”在上海举行&#xff0c;会上举行了“心理健康人工智能产学研创新联盟”的签约和揭牌仪式。“树洞行动救援团”创始人深兰科技科学院智能科学首席科学家、荷兰阿姆斯特丹自由大学人工智能系终身教授黄智生&#xff0c;深兰科技集团创…...

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模型)

摘要&#xff1a;基于YOLOV8模型的西红柿目标检测系统可用于日常生活中检测与定位西红柿目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...