关于链表的三个常用算法

2023-11-08

 //找到环的第一个入口点
        static public SinglyLinkedListNode<T> FindLoopPort(SinglyLinkedList<T> list)
        {
            SinglyLinkedListNode<T> pslow = list.head;
            SinglyLinkedListNode<T> pfast = list.head;
            //为什么有环的单向链表这样做一定会相交?
            while (pfast != null && pfast.next != null)
            {
                pslow = pslow.next;        // 每次前进一步
                pfast = pfast.next.next;  // 每次前进二步
                if (pslow == pfast)          // 两个指针相遇,说明存在环
                    break;
            }
            if (pfast == null || pfast.next == null)    // 不存在环
                return null;
            pslow = list.head;
            while (pslow != pfast)
            {
                pslow = pslow.next;        // 每次前进一步
                pfast = pfast.next;        // 每次前进一步
            }
            return pslow;       // 返回环的入口点
        }

        //两个无环单向链表是否相交, 若相交则求出第一个相交的节点
        static public SinglyLinkedListNode<T> Intersection(SinglyLinkedList<T> list1, SinglyLinkedList<T> list2)
        {
            int len1 = list1.Count;
            int len2 = list2.Count;
            int distance=Math.Abs(len1-len2);
            SinglyLinkedListNode<T> head1=list1.head;
            SinglyLinkedListNode<T> head2=list2.head;
            if (len1 < len2)
            {
                for (int i = 0; i < distance; i++)
                    head2 = head2.next;
            }
            else if (len2 < len1)
            {
                for (int i = 0; i < distance; i++)
                    head1 = head1.next;
            }
            //指针对齐之后开始确定相交节点
            while (head1.next != null && head2.next != null && head1 != head2)
            {
                head1 = head1.next;
                head2 = head2.next;
            }
            if (head1 != null && head2 != null)
                return head1;
            else
                return null;
        }

        //单向链表的反转
        static public void Reverse(SinglyLinkedList<T> list)
        {
            SinglyLinkedListNode<T> p, q;
            SinglyLinkedListNode<T> temp;
            if (list.Count >= 2)
            {
                p = list.head;
                q = p.next;
            }
            else
                return;
            while (q != null)
            {
                temp = q.next;
                q.next = p;
                p = q;
                q = temp;
            }

            list.head.next = null;
            list.head = p;
        }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于链表的三个常用算法 的相关文章

  • linux note

    目录 快捷键 符号含义 系统目录颜色 系统根目录含义 ls al cd set env export source exec 快捷键 打开终端的快捷键的为 Ctrl 43 Alt 43 T 关闭终端的快捷键为 Ctrl 43 D 符号含义
  • A Survey on Concept Drift Adaptation Note

    A Survey on Concept Drift Adaptation Abstract Concept drift primarily refers to an online supervised learning scenario w
  • C,C++,C#note

    1 c 43 43 中的类的定义和声明可以都写在头文件中 xff0c 然后cpp文件include头文件 xff1b 也可以声明在头文件 xff0c 定义在cpp文件 xff1b 或者所有声明和定义都放在cpp文件 xff1b 混写定义与声
  • (Note)深度学习与人工提取的特征

    首先 xff0c 深度学习一般 不需要人工提取特征 如果仅仅给网络提供人工提取的特征 xff0c 反而有可能会造成网络性能的下降 xff08 深度学习模型可能提取到一些人类不易察觉的特征 xff0c 这些特征可能对结果的判定有着较大的贡献
  • 美国的有线电视节目提供商

    HBO HBO电视网 英文名 Home Box Office 是总部位于美国纽约的有线电视网络媒体公司 HBO电视网于1972年开播 全天候播出电影 音乐 纪录片 体育赛事等娱乐节目 与绝大多数电视频道不同的是 它不卖广告 经过22年的发展
  • Spring_Accepting request input

    Spring MVC provides several ways that a client can pass data into a controller s handler method These include 1 Query pa
  • C++ Primer Exercise 5.18

    Understanduing the difference between C and C therefore know the computer language deeper vector
  • ubuntu 安装360浏览器

    ubuntu 安装360浏览器 推荐一个我自己做的普法公众号 大可说法律 有法律方面咨询的可以关注 因为之前收藏的书签都在360浏览器 为了方便 我找到了下载360浏览器的方法 官方下载 https browser 360 cn se li
  • python_error

    inspection info This inspection detects code which can not be normally reached 检验信息 本次检验检测到正常情况下无法达到的代码 inspection info
  • nn.Sequential和nn.Module区别与选择

    一 nn Sequential torch nn Sequential是一个Sequential容器 模块将按照构造函数中传递的顺序添加到模块中 另外 也可以传入一个有序模块 为了更容易理解 官方给出了一些案例 Sequential使用实例
  • Ubuntu 使用笔记

    更新时间 2020 3 24 文章目录 一 安装 二 快捷键 三 常用命令 3 1 软件安装 3 2 程序编写 四 软件使用 1 终端使用 2 Vim编辑器 3 Linuxqq 4 基于wine 的软件下载 5 CAJViewer使用 6
  • 博士的归宿

    1 高校 2 央企的研究院 3 外企的研发机构
  • 关于链表的三个常用算法

    找到环的第一个入口点 static public SinglyLinkedListNode
  • Ruby

    1 如何安装ralis 在线安装常常因为公司proxy server的原因产生连接问题 所以可以先到https rubygems org下载然后离线安装 gem install l rails2 3 5 gem
  • 「转」plt.legend()简明使用教程

    原文链接https blog csdn net helunqu2017 article details 78641290 感谢作者辛勤付出 仅作笔记使用 侵删 1 图例legend基础语法及用法 legend语法参数如下 matplotli
  • Loss和神经网络训练

    出处 http blog csdn net han xiaoyang article details 50521064 声明 版权所有 转载请联系作者并注明出处 1 训练 在前一节当中我们讨论了神经网络静态的部分 包括神经网络结构 神经元类
  • Java springboot自定义bean加载控制顺序在flyway执行后

    在springboot中 我们经常需要在系统启动时执行一些自定义逻辑 例如将数据库中的值读取给bean使用等等 一般采用自定义bean的初始化流程方式实现 方式有许多种 但假如这个bean要被其他模块使用时保证已经被初始化过 就不能简单的采
  • 程序记录(一)VGG16猫狗分类

    import torch from torchvision import datasets models transforms import os from torch utils data import DataLoader from t
  • 「学习笔记」torchvision.datasets.MNIST 参数解读/中文使用手册

    DataLoader使用手册 参数解读 PyTorch torch utils data DataLoader 中文使用手册 官方手册如下 torchvision datasets MNIST root train True transfo
  • ADC 读取电位器旋钮,用回差消除临界值档位跳动

    就是比如 用电位器当旋钮做风扇调速 划分出10 个速度档位 对应10 个ADC 转换结果的阈值 如果直接比较阈值 当旋钮拧到临近阈值的地方时 ADC 结果的微小跳动会导致风扇档位在两个级别之间不停左右横跳 因此想到了利用回差来消除抖动 回差

随机推荐

  • js数值进制转换

    int toString 16 converts int to hex eg 12 gt C int toString 8 converts int to octal eg 12 gt 14 parseInt string 16 conve
  • LeetCode 495. 提莫攻击

    题目链接 点击这里 AC代码 class Solution public int findPoisonedDuration vector
  • 用频谱仪测量晶体频率的方法

    摘要 用频谱仪测量晶体的时钟频率 查看时钟的频偏 关键字 频谱仪晶体频率频偏 一 背景与现象 怎样精确的测量晶体的时钟频率 是每一个硬件工程师所面临测量问题 用频率计测试晶体频率 又担心探头本身的寄生电容会影响晶体本身的负载电容 造成测试的
  • PGSQL 导出数据库表结构

    之前要将数据库的表结构给做成markdow来写开发设计文档或是接口文档 去找各种开源工具 组件 整理了一个SQL语句可以查询出表结构 样式如下 SQL语句 里面的jiahui表示数据库的schema 默认是public SELECT CAS
  • R语言学习笔记6

    13 初级统计学 描述原始数据 数值型变量 数字型变量 是将观测值以数值形式存储的变量 连续型变量 可以在某个区间取任何值 任何位数 离散型变量 只能取离散型数据 在取值范围里 取得是有限个数 分类变量 两类 名义变量 不能按照逻辑顺序排列
  • js数据结构之栈

    1 栈数据结构 栈是一种遵从后进先出 LIFO 原则的有序集合 新添加或待删除的元素都保存在栈的同一端 称作栈顶 另一端就叫栈底 在栈里 新元素都靠近栈顶 旧元素都接近栈底 在现实生活中也能发现许多栈的例子 例如 下图中的一摞书 栈也被用在
  • springcloud-gateway网关聚合swagger实现多个服务接口切换

    正经学徒 佛系记录 不搞事情 springcloud是由多个不同的springboot服务组成的 微服务使用swagger有两种方法 如下 方法一 不推荐 但是是方法二的前置条件 对每个需要生成接口的项目集成swagger 具体方法点击查看
  • VM下ubuntu14.04安装编译linux-2.6.34内核

    Linux2 6所有内核下载地址 http www kernel org pub linux kernel v2 6 选择 1 解压 gf ubuntu ls Desktop Downloads linux 2 6 34 tar bz2 P
  • was配置mysql数据源另一种方式

    1 添加JDBC驱动程序 打开was控制台 资源 JDBC提供程序 新建 2 配置JDBC参数 选择数据库类型为 用户自定义 数据库类型 com mysql jdbc jdbc2 optional MysqlXADataSource 名称
  • nRF52832 — 1.44寸 TFT屏

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的
  • 关于:(.text+0x21): undefined reference to `shm_open'问题

    C programming in the UNIX environment的编程手册 一般都会为进程间用共享内存的方法通信提供两组方法 1 POSIX定义的 int shm open const char name int oflag mo
  • 开源数据集分类汇总(医学,卫星,分割,分类,人脸,农业,姿势等)

    本文汇总了医学图像 卫星图像 语义分割 自动驾驶 图像分类 人脸 农业 打架识别等多个方向的数据集资源 均附有下载链接 该文章仅用于学习记录 禁止商业使用 1 医学图像 疟疾细胞图像数据集 下载链接 http suo nz 2VQTUt 皮
  • Sqoop 使用详解

    Sqoop 概述 Sqoop 是Apache 旗下的一款开源工具 用于Hadoop与关系型数据库之间传送数据 其核心功能有两个 导入数据和导出数据 导入数据是指将MySQL Oracle等关系型数据库导入Hadoop的HDFS Hive H
  • C#(Unity3D)数值分析-牛顿(迭代)法

    最近需要用此方法解决一元五次方程求解问题 所以学习了下 在此记录一下 此方法的产生 是由于很多方程没有通解公式 所以求解只能通过数值方法 方法有很多 参见 数值分析 类似书有很多 牛顿法 这里引用书籍上所述 设方程 f x 0 其中有近似根
  • 多线程:线程安全与同步

    线程安全问题 线程安全问题产生的三个必要条件 多线程环境中 有共享数据 成员变量 而非局部变量 栈中是线程独立的 多个线程操作 增删改 了共享数据 单线程 以及 多线程在没有访问共享数据的情况下 是不会产生线程安全问题的 一旦多线程访问了共
  • 【Revit二次开发学习笔记】选取元素之先选择元素后执行命令

    第一步 写代码 using System using System Collections Generic using System Linq using System Text using System Threading Tasks u
  • TOWARDS A UNIFIED VIEW OF PARAMETER-EFFICIENT TRANSFER LEARNING

    本文也是属于LLM系列的文章 针对 TOWARDS A UNIFIED VIEW OF PARAMETER EFFICIENT TRANSFER LEARNING 的翻译 关于参数有效迁移学习的统一观点 摘要 1 引言 2 前言 2 1 T
  • xxx.app已损坏,打不开。 您应该将它移到废纸篓。

    Mac最新的系统打开网上下载的应用程序时 会提示 xxx app已损坏 打不开 您应该将它移到废纸篓 解决方式 1 系统偏好设置 gt 安全性与隐私 gt 修改为任何来源 2 serria里面没有 任何来源 这一项 需要打开终端执行sudo
  • 【数据结构】 二叉树面试题讲解->贰

    文章目录 引言 二叉树遍历 https www nowcoder com practice 4b91205483694f449f94c179883c1fef tpId 60 tqId 29483 rp 1 ru activity oj qr
  • 关于链表的三个常用算法

    找到环的第一个入口点 static public SinglyLinkedListNode