链表-相关的基础算法代码总结

数据结构-链表基础详解(超详细代码) 链表的定义及代码包含顺序表和单链表 目录一、线性表 1.线性表定义2.线性表特点二、线性表的顺序表示(顺序表)1、顺序表的优缺点2.插入操作3.删除操作4.练习三、线性表的链式表示(单链表)1.单链表定义2.单链表优缺点3.插入操作4.删除操作 5.查找操作5.1按序号查找结点 5.2按值查找结点 6.练习 1、顺序表的优缺点 1.优点:最好情况:在表尾插入元素,不需要移动元素,时间复杂度 阅读详情

以代码为主,帮助自己较好的理解思想。

1.反转链表

	//反转链表
	public ListNode ReverseList(ListNode head){
		
	
		ListNode current = head;//当前节点
		ListNode pre = null;
		ListNode reverseHead = null;//反转后的头结点
		ListNode temp = null;
		
		while(current != null){
			temp = current.next;
			current.next = pre;
			if(null == temp){
				reverseHead = current;
				break;
			}
			
			pre = current;
			current = temp;
		}
		
		return reverseHead;
	}

2.带环链表-环的入口节点(一步两步)

	//单向带环链表 环的入口节点  ---相遇肯定是在环上
	public ListNode EntryNodeOfLoop(ListNode pHead){
		if(pHead.next == null || pHead.next.next == null){//一步两步
			return null;
		}
		
		ListNode slow = pHead.next;
		ListNode fast = pHead.next.next;
		
		while(fast != null){
			
			if(slow == fast){//第一次相遇后(在环上)
				fast = pHead;
				while(slow != fast){
					slow = slow.next;
					fast = fast.next;
				}
				return fast;
			}
			
			//如果还没有第一次相遇  一步两步
			slow = slow.next;
			fast = fast.next.next;
		}
		return null;
	}

3.从尾至头输出链表节点值(递归)

	ArrayList<Integer> arrList = new ArrayList<Integer>();
	//从尾至头输出链表节点值
	public ArrayList<Integer> PrintListFromTailToHead(ListNode head){
		
		if(head != null){
			PrintListFromTailToHead(head.next);
			arrList.add(head.val);
		}
		
		return arrList;
	}

4.两个链表的第一个公共节点

	//两个链表的第一个公共节点
	public ListNode FindFirstCommonNode(ListNode pHead1,ListNode pHead2){
		
		if(pHead1 == null || pHead2 == null){
			return null;
		}
		
		int count1 = GetLength(pHead1);
		int count2 = GetLength(pHead2);
		
		ListNode p = pHead1;
		ListNode q = pHead2;
		
		if(count1 > count2){
			for(int i = 0;i < count1-count2;i++){//长度大的先走几步
				p = p.next;
			}
			while(p != q){
				p = p.next;
				q = q.next;
			}
			
		}else if(count1 < count2){
			for(int j = 0;j < count2-count1;j++){
				q = q.next;
			}
			while(p != q){
				p = p.next;
				q = q.next;
			}
			
		}else{
			while(p != q){
				p = p.next;
				q = q.next;
			}
		}
		
		return p;
	}
	
	public int GetLength(ListNode pHead){//获取链表长度
		
		int count = 0;
		while(pHead != null){
			count++;
			pHead = pHead.next;
		}
		
		return count;
	}

5.链表的倒数第K个节点

	//链表的倒数第K个节点
	public ListNode FindKthToTail(ListNode head,int k){//k的值从1开始
	
		if(head == null || k <= 0){
			return null;
		}

		ListNode p = head;
		ListNode q = head;
		
		for(int i = 1;i < k;i++){//p先走
			if(p.next != null){
				p = p.next;
			}else{
				return null;
			}
		}
		
		while(p.next != null){
			p = p.next;
			q = q.next;
		}
		
		return q;
		
	}

链表相关,先整理这些,后续补充。

【代码随想录】笔记--链表 代码随想录--链表 学习笔记 阅读详情

相关推荐

深入理解链表操作:算法与编程实践

本文通过解析书籍中的代码片段和算法示例,探讨了链表在数据结构中的应用。内容包括如何在链表中插入元素、计算最大相同项的数量、检测链表是否为空、翻转链表以及单链表的一些常见任务。通过具体的编程实践,展示了链表操作的逻辑和技巧。

weixin_34620658的博客 194

数据结构—链表(附代码示例)

数据结构(二) 一、单链表 定义:每个结点除了存放数据元素外,还要存储指向下一个节点的指针 1.用代码定义一个单链表 typedef struct LNode{ ElemType data; //数据域 struct LNode *next; //指针域,指针指向下一个节点 } struct LNode * p = (struct LNode *) malloc(sizeof(struct LNode)); typedef 关键字 —— 数据类型重命名 typedef <数据类型>

huluohong的博客 2143

基于STM32的频率计(采用外部中断的方式)

前言 最近在了解电赛相关的东西,和指导老师交流一下,我决定先从最简单的频率计做起。 频率计是来检测信号的频率的,在做频率计的时候可以用信号发生器发出的信号来进行测试。 原理 这是最基础的方波,我们可以通过检测上升沿的方式来测量其频率。从周期的角度出发连续两个上升沿的时间就是这个方波的周期,那这个周期分之一就是这个方波的频率了。 在思考了一段时间~~(我是萌新。。)~~ 我觉得有两个方法可以实现,第一个是采用stm32定时器的输入捕获功能,第二个就是用外部中断来实现这个功能。正如标题,我这次采用外部中断的方

qq_45784922的博客 6170

数据结构-链表(含全部实现代码)

本篇的内容是对链表的一个介绍,并且会使用C语言实现链表的几个主要接口。 目录链表的概念与结构 链表的概念与结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 一个链表由n个节点组成,每一个节点都是一个结构体,这个结构体里的一个成员是该节点存储的数据,另一个成员是指向下一个节点的指针。 其结构如下 上图只是一种结构的链表,并不是所有的链表都是这样的结构,在实际中链表的结构非常多样,有以下几种情况:是否带头,单向还是双向,是否循环。共23=8种

qq_45967533的博客 8824

DEA-Malmquist指数模型实战:从理论到应用的全流程解析

本文全面解析了DEA-Malmquist指数模型从理论到应用的全流程。文章详细阐述了该模型如何动态衡量效率随时间的变化,并将其分解为技术效率变化与技术进步,从而精准定位效率变动的根源。通过实战步骤演示了数据准备、软件操作(如DEAP 2.1)及结果解读,并结合水资源环境效率等案例,展示了其在包含非期望产出时的应用价值,为研究者进行动态效率分析提供了清晰指南。

b0c1d2的博客 220

从ATE到ATPG:基于Scan Chain的芯片制造缺陷定位实战解析

本文深入解析了从ATE到ATPG的芯片制造缺陷定位实战技术,重点介绍了Scan Chain的工作原理、异步复位触发器处理技巧以及Design Compiler中的DFT实现方法。通过实际案例展示了如何利用ATE测试数据和ATPG工具进行精确的缺陷定位,并分享了提升测试覆盖率和优化测试成本的专业技巧,为芯片测试工程师提供了宝贵的实战经验。

weixin_42527160的博客 378

链表基础(含代码)

如何创建一个链表,看书看不懂,怎么办

weixin_52300539的博客 721

事件相机数据处理实战:从原始事件流到视觉表征的三种核心方法

本文深入探讨了事件相机数据处理的核心环节,即如何将异步、稀疏的原始事件流转换为深度学习模型可处理的视觉表征。文章重点解析了三种核心方法:逐通道累积、体素网格双线性插值和对称累积事件表示,详细阐述了其原理、代码实现、可视化效果及各自的适用场景,为事件相机在目标识别、光流估计等视觉任务中的高效应用提供了实战指南。

read5的博客 438

相关链表的代码

本代码是对链表的建立,及删除,插入,寻找,输出的函数表达 #include #include using namespace std; typedef struct node{ int date; struct node *next; }node;//建立节点 node *creatline(node *head,int n) { node *p; cout<<"请输入对应链表的数值"

z6_6z的博客 385

Android 13 SPRD 源码默认打开多用户实际无效果问题修复

【代码】Android 13 SPRD 源码默认打开多用户实际无效果问题修复。

m0_60898338的博客 449

科研级YOLOv8 Neck革新:HS-FPN模块赋能,让特征融合更高效且参数量直降100W的实战指南

在文件夹下新建HS_FPN.py,将上述和HS_FPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

FJN110的博客 150

代码随想录——链表

思路:因为如果两个链表有交点,则从某一个数据元素开始以后的数据元素都是相同的,所以我们以从后往前的眼光看待,如下图所示,所以需要得到链表A和B的长度,计算它们的差,然后令其中短链表的指针从头结点开始,长链表的指针从与其对齐的位置开始,则下面判断curA.next是否等于curB.next即可(则指针A和指针B走过的距离均为。因为慢指针每次前进一个结点,并且当慢指针到达环形链表起点的时候,追击问题开始,不妨设此时时间为x,则快指针走过的路程为2x,所以此时快指针在环里走了大小为x的路程,其他分析见下图。

weixin_52342869的博客 1216

微信小程序 - 最新详细实现 “餐厅食堂外卖点餐“ 全屏左右联动菜单列表功能界面,附带搜索框、购物车功能、商品加减计算金额、折扣等,左侧商品分类,右侧列表数据,仿美团饿了么外卖点餐页面,饭店扫码点餐!

微信小程序,vue2,vue3,左右联动菜单,商品分类页面,点餐界面,美团外卖点餐,左右布局界面,饿了么点餐页面,左分类右列表,小程序实现左侧菜单,外卖点餐联动,锚点,点击左侧大类后侧列表跟着变跟着刷新,菜单左右联动效果,左菜单右边列表数据,uniapp,左侧菜单,右侧列表双向联动效果,右侧商品滑动时,右侧列表双向联动效果,侧边菜单和右边滚动条,电商项目,购物车,商品加减计算,外卖选餐页面带购物车计算,自动计算金额,微信小程序外卖点餐界面源码,店铺页面滑动左右联动,点餐类小程序界面,堂食,扫码点餐,餐饮行业

🏆 前端领域优质创作者 5157

代码随想录算法训练营第三天| 链表篇1

/ 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)Java中采用了构造器来定义,包含知识点含参构造器以及关键字this的应用,注意复习。

a1140546100的博客 772

Python地理数据处理 十七:植被物候提取和分析(Savitzky-Golay)

植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于生态工程保护建设和植被自然生长等因素,中国陆地生态系统发挥了重要的碳汇作用。因此,定量评估植被时空动态变化是制定生态系统可持续发展目标和衡量生态系统固碳潜力的重要前提,卫星遥感数据衍生的生态参量产品为研究长时间序列全球及区域植被时空变化提供了重要数据源。SG滤波能够对物候信息进行平滑,并提取其中的物候信息

amyniez的博客,欢迎交流讨论 4246

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

代码随想录算法训练营第三天 | lc.203 移除链表元素 | lc.707. 设计链表 | lc. 206.反转链表

什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。如图所示:数组在内存中是物理形式的连续分配,而链表是逻辑上的连续链表的定义链表的操作主要涉及增、删、改,关键就是调整next指针指向的ListNode。

senny_的博客 555

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

代码随想录刷题day10|(链表篇)707.设计链表

定义链表节点类ListNode定义MyLinkedList类在查找第n个结点时,根据操作是否需要知道前一个结点的值,来决定临时指针最终遍历指向的结果;⭐️增删操作以后,链表长度要对应增减,容易忘记;遍历操作中,关于边界问题,可以代入极端例子(n=0)进行验证,检查是否有空指针异常;循环的终止条件要清楚;增删操作中,更改边的顺序也要注意;容易出错;如何用while(for)循环遍历找到第n个结点;⭐️链表的定义和初始化不太熟悉;▲。

m0_64265848的博客 1540

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

代码随想录算法训练营第三天|链表理论基础、203.移除链表元素、707.设计链表、206.反转链表

addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。单链表中的指针域只能指向节点的下一个节点。

2401_87652382的博客 503

代码随想录算法训练营第一天 | Javascript | 203. 移除链表元素、707. 设计链表

本人是小几年经验的前端开发,算法基础只有力扣几十道题,非常薄弱。今天是个人的代码随想录算法打卡第一天,因为是第三天进的训练营,前两天内容还需补上,mark一下激励自己也激励同样在刷算法的道友们。黑神话悟空最近刚出,送大家一句话:踏平坎坷成大道,斗罢艰险又出发!

RayLobeCode的博客 418

代码随想录算法训练营第三天 | 203.移除链表元素 | 707.设计链表 | 206.反转链表

自己实现中遇到哪些困难链表还是挺简单的数据结构的今日收获,记录一下自己的学习时长要手动跑一次代码,确认逻辑是对的,确认实现是对的,确认自己的测试是通过的,确定是处理了特殊情况的,然后一遍 A 过。解惑(补充)链表理论基础代码随想录知识点链表是线性结构链表的定义单链表,双链表,循环链表增删查改虚拟头结点203.移除链表元素(简单)代码随想录。

Noah_aa的博客 707

代码随想录算法训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表

建议先看我的视频讲解,视频讲解中对 反转链表需要注意的点讲的很清晰了,看完之后大家的疑惑基本都解决了。建议: 这是一道考察 链表综合操作的题目,不算容易,可以练一练 使用虚拟头结点。建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。建议:了解一下链表基础,以及链表和数组的区别。203.移除链表元素。203.移除链表元素。

a61679434973的博客 181

C 408—《数据结构》算法题基础篇—链表(上)

408考研——《数据结构》算法题基础篇之链表(上)。

优快云 / 稀土掘金/ B站 / GitHub: Cyan_RA9 1959

0-1的算法学习之路 链表篇

数学系学习算法第三天。代码随想录day3。

ttjkp_L的博客 215

代码随想录算法训练营第三天 203.移除链表元素、707.设计链表、206.反转链表

代码随想录算法训练营第三天|| 203.移除链表元素、707.设计链表、206.反转链表

Kpual的博客 815

代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表

思路:若直接在原链表上进行删除,则头节点和其他节点的操作须分开,因为其他节点都是通过前一个结点进行删除,而头节点没有前一个结点(头节点的删除只要将头节点后移一位即可)。单链表中的指针域只能指向节点的下一个节点,而双链表的每一个节点有两个指针域,一个指向上一个节点,一个指向下一个节点,因此双链表既可以向前查询也可以向后查询。链表通过指针域的指针链接在内存中各个节点,所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。,第0个节点即为头节点。

qq_46597090的博客 200

算法刷题笔记04 | 第二章 链表P1 | 203. 移除链表元素、707.设计链表、206.反转链表

链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。// 成员变量:// 结点的值int val;// 下一个结点// 成员方法// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)

icecoree的博客 389
上一篇: linux常用且使用shell命令
下一篇: linux下mysql相关操作命令
Rolandcoder
博客等级 码龄10年 19粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值