数据结构之链表——环相关问题及解决思路汇总

双指针巧解链表有环问题 链表有环问题可以使用双指针技巧轻松解决。 - 判断链表是否有环问题,可以通过设置快慢指针同向遍历链表,若相遇则有环。 - 找环入口问题,也可以通过设置快慢指针同向遍历链表,寻找相遇点。不同的是,当两指针相遇后,快指针回到链表头节点,慢指针留在相遇节点,两者同速遍历,二次相遇点一定是环入口。 阅读详情

链表是一种常见的数据结构,无论是实际应用还是面试中,出现的频率都比较高,链表适宜存储关系不固定的数据,属于动态存储,区别于数组结构的静态存储。本篇小博主要围绕三个常见的链表问题进行分析。

一、建立一个自己的链表结构

class node {
<span style="white-space:pre">	</span>int data;
	node next;
	public node(int data) {
		this.data = data;
	}
}
二、判断链表是否存在环

思路:设置两个指针,一快一慢(目前市场上貌似都是这种解法),如果快指针能和慢指针重合,则说明链表存在环。代码如下:

public static boolean IsLoop(node head) {
		node p = head;
		node q = head.next;
		while(p !=  q && q != null) {
			p = p.next;
			q = q.next.next;
		}
		if(p == q) {
			return true;
		}
		else {
			return false;
		}
	}
三、环的长度

思路:计算快慢指针第一次相遇与第二次相遇之间的循环次数,即为环的长度。

public static int LoopLength(node head) { //单链表快慢指针第一次到第二次相遇之间的步长即是
		node p = head;//慢指针
		node q = head.next;//快指针
		int flag = 0;
		int res = 0;
		while(q != null) {
			if(p == q) { //首次相遇 flag变为1
				flag++;
			}
			if(flag == 1) {
				res ++;
			}
			if(flag == 2) { //第二次相遇 break
				break;
			}
			p = p.next;
			q = q.next.next;
		}
		return res;
	}
四、寻找环的起点

思路:可以用hashtable

public static node LoopStart(node head) {
		Hashtable<node,Integer> table = new Hashtable<node,Integer>();
		while(head != null) {
			if(table.containsKey(head)) {
				break;
			}
			else {
				table.put(head, 1);
			}
			head = head.next;
		}
		return head;
	}
五、测试

public static void main(String[] args) {
		node n1 = new node(1);
		node n2 = new node(2);
		node n3 = new node(3);
		node n4 = new node(4);
		node n5 = new node(5);
		n1.next = n2;n2.next = n3;n3.next = n4;n4.next = n5;n5.next = n2;
		
		//1、检测有环没有
		System.out.println(IsLoop(n1));
		//2、查看环的长度
		System.out.println(LoopLength(n1));
		//3、环的起始点
		System.out.println(LoopStart(n1).data);
	}

链表的回环问题 Found cycle in the ListNode ​ 于是开始推演了下原来的思路,经过调试后发现,因为链表不同于数组,我们的引用实际指向的是内存中的地址,出现环的问题是因为链表的结点相同。leetcode连接:https://leetcode.cn/problems/partition-list/⭐:总的来说,链表和数组是不同的,不能把链表的节点当做单独来处理,应该时刻注意引用指向的是内存地址。出现环其实并不是个错误,真正错误的在于输出的时候会因为循环导致 OOM 的错误。 阅读详情

相关推荐

链表相关练习题以及题解

学习完了链表结构,不妨多加练习熟系这种数据结构。所以本篇论文列举出了一些和链表相关的练习题,并描述解题思路,相信对能够令读者对链表这种结构的掌握更加得心应手。

2302_81342533的博客 1300

For环结构java_图解Java数据结构之环形链表

本篇文章介绍数据结构中的环形链表。介绍环形链表,类似于单链表,也是一种链式存储结构,环形链表由单链表演化过来。单链表的最后一个结点的链域指向NULL,而环形链表的建立,不要专门的头结点,让最后一个结点的链域指向链表结点。 简单点说链表首位相连,组成环状数据结构。如下图结构:而在环形链表中,最为著名的即是约瑟夫环问题。约瑟夫环问题问题介绍:设编号为1、2、3、… 、n的n个人围坐一圈,约定编号为k(...

weixin_30025473的博客 253

数据结构面试:链表相关问题的解题套路总结

链表是数据结构面试中最常考的知识点之一,也是许多初学者感到困惑的难点。本文旨在系统梳理链表问题的解题套路,帮助读者在面对链表相关面试题时能够快速找到解决思路。链表核心概念与特点链表问题的常见解题套路典型面试题实战解析优化技巧与常见陷阱扩展思考与练习建议链表(Linked List):由一系列节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。单链表(Singly Linked List):每个节点只有一个指针指向下一个节点。双链表(Doubly Linked List)

AI 算法实战派 1082

数据结构-链表里面的环

数据结构--链表里面的环(判断是否有环,环的入口)

菜菜子&的博客 2965

链表算法解题思路总结

一、删除结点 解题思路 哑结点+双指针 哑结点:在一个链表的前边添加一个结点 双指针:(1)快慢指针(2)前驱指针和工作指针 题目来自leetcode和牛客网的剑指offer 1.删除链表中的结点leetcode237 思路分析 找到该节点node的前驱结点,修改结点的next指针,使其指向node的下一个结点。 todo 代码 扩展:有没有时间复杂度为O(1)的方法? 思路分析 把将要删除的n...

meihuai7538的博客 1222

白话详细解读(七)----- CBAM:Convolutional Block Attention Module

一、CBAM简介 论文链接:https://x.sci-hub.org.cn/scholar?hl=zh-TW&as_sdt=0%2C5&q=CBAM%3A+Convolutional+Block+Attention+Module&btnG=&oq=CB CBAM这篇论文是在2018年提出的,自提出之后,已经被引用上千次,可见其影响力。CBAM是一种专门为了卷积神经网络而设计的注意力模块,传统的卷积存在只关注局部信息,而往往忽略全局信息的弊端,以3*3卷积为例,滤波器有9个

奋斗の博客 1万+

数据结构--环形队列的介绍与实现

数据结构--环形队列实现一、环形队列实现原理环形队列的几个判断条件二、代码实现1.环形队列类(CircleQueue)2.环形队列类测试类3.程序运行结果4.完整代码 环形队列可以用数组实现,也可以使用循环链表实现.在使用数组实现循环队列的时候,需要理解清楚队列头和队列尾的判断空还是满的处理方法; 环形队列特点: 避免假溢出现象(由于入队和出队的操作,头尾指针只增加不减少,致使被删元素的空间永远无法重新利用,当队列继续存储元素时,出现尾指针已经到达了队列尾,而实际头指针前面并未满的情况),可以将队列空间充

凌云 1万+

【Unity3D】RTS Engine 笔记一

RTS Engine 中配置一个新场景, 初步认识GameManager、设置地形以及配置地形网格搜索

ViYeye的博客 1649

【数据结构实战】打造属于你的超级链表

前面几期我们对链表都进行了很详细的讲解,这期我们来给链表最后上点强度,打造出链表的ProMax版:带头双向循环链表。

m0_74779094的博客 2854

中国IP发展之面面观

谢学军/邱善勤2006-1-25 9:29:28电子经理世界       IP远没有我们当初想象的那么简单   当SoC设计方法学刚刚传到国内的时候,学界为之欢呼雀跃,由于IP/SoC设计技术的使用,可以将发达国家用几年甚至十几年积累起来的设计技术直接为我所用,使中国的集成电路跳过漫长的积累阶段,迅速站到较高的起点上。因此在当时看来,IP/SoC设计技术是我国提升设计水平、发展

klxdmm305的专栏 1188

C#里用HttpListener实现WEB API接口服务端

本文介绍了一个基于WinForm的HTTP服务实现方案。该方案使用HttpListener类创建了一个支持JSON POST请求处理的轻量级Web服务器,主要特点包括:1) 纯线程方式实现请求监听和处理;2) 提供标准化的JSON响应格式;3) 支持自定义请求处理逻辑;4) 包含完整的日志记录功能。代码示例展示了如何初始化服务、处理不同类型的请求(包括JSON POST),并提供了线程安全的UI更新机制。该实现适用于需要简单HTTP接口的Windows桌面应用程序,可作为程序间通信的基础设施。

大坡3D软件开发 228

【数据结构】LeetCode升级版的环形链表,复制带随机指针的链表

本文详细的讲述了升级版的环形链表和复制带随机指针的链表,里面包含了详细思路和图片,通俗易懂,能够使你快速掌握,在最后面还带有源码,更容易理解。

m0_63198468的博客 3367

39-高级优化技术:指令调度与乱序执行 - 手把手教你手写CPU

本文介绍了现代处理器设计中提高指令级并行性(ILP)的两种关键技术:指令调度和乱序执行。指令调度分为静态调度(由编译器完成)和动态调度(由硬件完成),后者能更好适应运行时情况但复杂度更高。乱序执行通过动态重排指令顺序提高硬件利用率,其核心组件包括重排序缓冲区、保留站和寄存器重命名。文章提供了保留站的Verilog实现示例,并分析了不同优化技术在性能、硬件开销和功耗方面的权衡。最终指出,CPU设计需根据性能、功耗等需求选择合适的优化技术。

2301_79143213的博客 85

数据结构之单链表相关刷题

有关链表的刷题:反转链表,移除链表元素,链表的中间节点,环形链表的约瑟夫问题,合并两个有序链表,分割链表

我要学编程的博客 1391

【3天快速入门WPF】8-数据绑定基础

以下是一个简单的 WPF 数据绑定示例,使用两个TextBox控件分别表示Name和Age来进行进行数据绑定试验。运行程序后,你会看到初始界面中TextBox 中显示初始名字 “张三”,TextBox 中显示初始年龄 “25”。在 XAML 中创建一个简单的界面,包含一个 TextBox 用于输入名字,一个 TextBox 用于显示年龄。当你在 TextBox 中修改名字时,Person 对象的 Name 属性会被自动更新,反之亦然。它的主要作用是为控件及其子控件提供一个默认的数据源,用于数据绑定。

Zy100Papa的博客 969

YOLOv11改进-卷积-引入小波卷积WTConv 解决多尺度小目标问题

1.首先,WTConv利用二维Haar小波变换对输入图像进行多级分解。低频分量 (LL):捕捉图像的低频信息,如整体形状或轮廓。水平高频分量 (LH):捕捉图像中的水平边缘信息。垂直高频分量 (HL):捕捉图像中的垂直边缘信息。对角线高频分量 (HH):捕捉图像的对角线细节。在每一级的小波变换中,图像被下采样(空间分辨率减半),但频率信息得到了更细的分解。递归地执行小波变换(称为多级分解)可以得到不同尺度下的频率分量。

qq_64693987的博客 1万+

有关单链表存在环的相关面试问题

有关单链表存在环的相关问题 完整代码 1.概述 有关单链表存在环相关的问题比较经典,也是在面试中容易被问到的问题。在讨论这些问题前先简要的介绍一下链表的概念。 单链表:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。每个结点的构成:元素(数据元素 的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 在一个单向...

ylltw01的博客 238

2025_NIPS_RAGRouter: Learning to Route Queries to Multiple Retrieval-Augmented Language Models

该研究聚焦检索增强生成(RAG)场景下的大语言模型(LLM)路由问题,提出了首个RAG感知的路由框架RAGRouter。核心解决现有路由方法依赖静态参数知识、忽略检索文档动态影响的缺陷,通过融合文档嵌入、RAG能力嵌入与对比学习,捕捉RAG引发的模型知识表征变化,为每个查询-文档对选择最优LLM。实验覆盖5个知识密集型任务、15个开源/闭源LLM,验证了RAGRouter在性能上超越最佳单LLM和非RAG感知路由方法,且通过阈值机制实现低延迟约束下的性能-效率平衡。

UnknownBody_2的博客 271

链表--如何检测一个链表是否有环及如何找到环的入口点

如何检测一个链表是否有环 有环的链表: 有环的链表是指链表有环路,例如A-&amp;gt;B-&amp;gt;C-&amp;gt;D-&amp;gt;E-&amp;gt;F-&amp;gt;B,遍历的时候B-&amp;gt;C-&amp;gt;D-&amp;gt;E-&amp;gt;F-&amp;gt;B会形成环路一直循环。 思路: 设置一个快指针fast,一个慢指针slow,二者初始都指向链表头,fas

yangruxi的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

判断链表是否有环,并找出环起点(快慢指针)

给定一个链表的头节点 head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。如果pos是-1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改链表。

wdghcfrg的博客 984

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

判断链表中是否有环(C语言)

声明:题目来源:力扣(LeetCode) 给定一个链表,判断链表中是否有环。 题目链接:环形链表 示例1: 输出:true 示例2: 输出:true 示例3: 输出:false 解题思路:首先从环的性质入手,如果存在环,那么我若是使用一个指针遍历链表,这个指针将会一直在链表中的环里转圈圈。那要如何判断是否有环也就显而易见了:若是指针访问到了之前访问过的节点,那么链表有环,若是能遍历完链表,那...

weixin_44788162的博客 5095

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【数据结构】反转链表,合并有序链表,有无环的判断

本篇讲述了单链表的重要题型,包括反转单链表,合并两个有序链表,和判断链表是否有环,以及相关代码的实现。

GGBond778的博客 1001

有环链表的问题解决思路

算法基础!

沧海一声笑的专栏 477

C语言判断环形链表中是否有环以及其相关问题(快慢指针)

周易·乾》当思考问题时,我们可以先把图画出来,可以帮助我们更好的理解一个链表创建了两个指针(一个快指针,一个慢指针) ,在最开始时两个都指在最开头.此时两个指针开始走快指针一次走两步,慢指针一次走一步,当快指针走到环的第一个节点时,慢指针走了一半,如下图此时两个指针继续走,当slow指针也进入环中时,我们会发现问题便转变为追击问题fast一次走两步,slow一次走一步,两者都在链表的环中行走,直至遇到.可能一些同学有一定的疑问两者有没有可能会错过,每次相遇的时候都刚好错过?

2401_88240248的博客 956

【JavaScript 算法】-- 链表问题整理和解决思路总结

一、链表 链表和数组相似,它们都是有序的列表、都是线性结构(有且仅有一个前驱、有且仅有一个后继)。不同点在于,链表中,数据单位的名称叫做“结点”,而结点和结点的分布,在内存中可以是离散的。 在链表中,每一个结点的结构都包括了两部分的内容:数据域和指针域。JS 中的链表,是以嵌套的对象的形式来实现的: { // 数据域 val: 1, // 指针域,指向下一个结点 next: { val:2, next: ... } } 大

野生松 2837

链表环算法

1:链表有环的定义 所谓链表有环,就是指链表的尾指针指向链表中的某一个节点 方法1:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。 代码实现: int HasLoop(LinkList L) {    int step1=1;    int

我的专栏 830
上一篇: 机器学习算法(三)——朴素贝叶斯算法及R语言实现方法
下一篇: 杂谈(一)
AugustWind
博客等级 码龄12年 11粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值