链表及相关面试题

news2024/11/27 5:29:19

链表

单链表

特点:

  • 逻辑上顺序存储,物理上无序存储
  • 头指针根据情况而定,不保存数据,很多操作需要头指针,比如原地反转链表。
  • 每个节点包含 data, Node next保存下个Node
public class LinkList {
  public Node header=new Node();
    add{}
    query{}
    ....
}

public class Node{
    String data;
    Node next;
    Node(Sring data){
        this.data=data;
    }
}

常见操作:增删改查。

单链表面试题

1 求链表中的有效节点数?

思路 1:while(true)遍历该链表 直到next==null break,否则Count++

思路 2:设置两个节点,Fir 走一步,Sec 走两步,

​ 当 Sec.next==null retrun Fir步数 * 2+1

​ 当 Sec.next.next==null retrun (Fir步数+1) * 2

2 查找单链表中倒数第K个节点。

思路 1:遍历两次,第一次得到链表长度L,第二次遍历到L-K

思路 2: 设置两个节点,第一个节点先走K步,第二个节点在一起走,当第一个节点next==null时,第二个节点正好是倒数第K个节点。

3 单链表的反转

思路 1:在创建一个头结点,遍历该链表的过程中利用头插法,移动到一个新的头节点上,最后再把原来的头结点指向创建的头结点的next。

思路 2:原地腾转移诺法。

header -> h1 -> h2 -> h3…

h1=header.next;
temp=header;
while(h1.next!=null){
    temp.next=h1.next;
    h1.next=h1.next.next;
    h1.next.next=h1;
    temp=temp.next;
}


4 从尾到头打印单链表

思路 1:反转链表后输出,不推荐。改变了原来数组的结构。

思路 2:利用栈,对链表进行遍历[^ 不香吗 ]。

双向链表

双向链表的结构

public class Linklist(){
    private Node header=new Node(null,null,null);
    
    Node getheader(){
        retrun header;
    }
    add(Node node){...}
    ...
}
class Node(){
    String value;
    Node next;
    Node pre;
    //构造器
    Node(...){
        ...
    }
    String toString(){
        ....
    }
    
    
}

双向链表的增删改查:

  • 增加
  • 删除
  • 修改
  • 查询

环形单链表

引入问题约瑟夫

第一步: 实现环形链表的建立

输入一个值k,创建一个值为1-k环形链表

思路:

  • 如果k=1 让它自己指向它自己return;
  • 如果k>1,先new Node( 1 ),然后创建变量temp,进行k-1次循环,temp总是指向当前循环的最后一个元素。
 static Node init(int k){
        Node fir=new Node(1);
        if(k==1){
            fir.next=fir
            return fir;
        }
        Node temp=fir;
        for (int i = 2; i <=k; i++) {
            Node node=new Node(i);
            temp.next=node;
            node.next=fir;
            temp=node;
        }
        return fir;
    }

第二步:遍历约瑟夫环

思路

  • 进行k次循环,需要temp遍历。

第三步:按m步遍历约瑟夫环

思路:

  • 如果m=1
  • 如果m!=1循环k次,让它走m-2步,即走到需要删除的节点的前一个节点。
    static void game(Node fir,int k,int m){
        Node temp=fir;
        if(m==1){
            while (true){
                if(temp.data== temp.next.data){
                    System.out.println(temp.data);
                    return;
                }
                System.out.println(temp.next.data);
                temp.next=temp.next.next;


            }
        }
        for (int i = 0; i < k; i++) {
            for (int j = 0; j < m; j++) {
                if (j==m-2){
                    System.out.println(temp.next.data);
                    temp.next=temp.next.next;
                    temp=temp.next;
                    break;
                }
                temp=temp.next;
            }
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统初始化加载动画逻辑以及隐藏

需求&#xff1a;进入系统默认有如下的加载界面&#xff0c;但是由于网页内嵌到了其他网页中&#xff0c;这种环境下进入时再加载就不合适&#xff0c;需要隐藏掉。 因此本文的内容逻辑为 文章目录 研究加载逻辑解决需求&#xff1a;在被内嵌时隐藏掉loading 研究加载逻辑 1.…

【SpinalHDL快速入门】3、Scala 快速入门

SpinalHDL本质上来讲是Scala语言的一个库&#xff0c;所以需要先学习Scala&#xff0c;才能在此基础上学习SpinalHDL。 文章目录 Scala 基础Scala 数据类型&#xff08;5种&#xff1a;Boolean、Int、Float、Double、String&#xff09;Scala VariablesScala FunctionsReturnRe…

Python自动化测试框架:unittest介绍

Unittest是Python中最常用的测试框架之一&#xff0c;它提供了丰富和强大的测试工具和方法&#xff0c;可以帮助开发者更好地保证代码质量和稳定性&#xff0c;本文就来介绍下Unittest单元测试框架。 1. 介绍 unittest是Python的单元测试框架&#xff0c;它提供了一套丰富的测…

2023软件测试卷出天际!!!性能测试为啥一枝独秀?

近十年是中国互联网发展最快的10年&#xff0c;互联网用户从4亿增长至10亿。面对用户量的暴增&#xff0c;用户体验就成为互联网产品最大的考验。而 影响用户体验的最重要因素就是性能。 流量为王的时代&#xff0c;性能测试是所有产品上线前必须通过的重要环节。 企业招聘性…

12米与30米TanDEM-X数字高程模型DEM数据的下载申请方法

本文介绍全球12米与30米高空间分辨率的数字高程模型&#xff08;DEM&#xff09;数据——TanDEM-X数据的下载申请方法。 Tandem-X卫星项目于2010年6月启动&#xff0c;并于2010年6月21日和2010年12月21日分别发射两颗卫星&#xff0c;即TerraSAR-X和TanDEM-X。Tandem-X卫星之间…

裸辞3个月,面试了25家公司,这难度真不一般····

上半年裁员&#xff0c;下半年裸辞&#xff0c;有不少人高呼裸辞后躺平真的好快乐&#xff01;但也有很多人&#xff0c;裸辞后的生活五味杂陈。 面试25次终于找到心仪工作 因为工作压力大、领导PUA等各种原因&#xff0c;今年2月下旬我从一家互联网小厂裸辞&#xff0c;没想到…

【Android】WMS(五)输入事件原理

输入事件原理 安卓输入事件整体流程 Android 系统是由事件驱动的&#xff0c;而 input 是最常见的事件之一&#xff0c;用户的点击、滑动、长按等操作&#xff0c;都属于 input 事件驱动&#xff0c;其中的核心就是 InputReader 和 InputDispatcher。 InputReader 和 InputD…

申请国家标准项目管理专业人员能力评级(CSPM)报名条件有哪些?

2021年10月&#xff0c;中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系&#xff0c;开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会&#xff08;CAS&#xff09;组织开展的项…

3.JavaScript常用对象数组对象

3.1、数组对象 3.1.1、概述 目录 3.1、数组对象 3.1.1、概述 3.1.2、创建数组 3.1.2.1、使用对象创建 3.1.2.2、使用字面量创建 3.1.3、遍历数组 3.1.4、数组属性 3.1.5、数组方法 3.2、函数对象 3.2.1、call()和apply() 3.2.2、this指向 3.2.3、arguments参数 3…

JavaSE-06 [面向对象+封装]

JavaSE-06 [面向对象封装] 第一章 面向对象思想 1.1 面向过程和面向对象 面向过程&#xff1a; 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就可以了面向对象&#xff1a; 面向对象是把构成…

PYTHON元素定位方式总结

一&#xff0c;常用的8种定位方式 id定位 driver.find_element_by_id("id 值")   driver.find_element(by "id", value "ID值" ) name定位 单个元素&#xff1a;     driver.find_element_by_name("name值")     drive…

总结:记一次docker调试镜像的问题

一、背景 同事让帮忙部署一个应用到QKE&#xff0c;给了我镜像地址与配置文件。 由于要将配置文件映射到容器中&#xff0c;我创建了configmap&#xff0c;然后应用中将configmap中key对应的内容映射到了容器中的配置文件中。 但是我遇到了一个问题&#xff1a; 容器频繁快…

100多的ipad触控笔好用吗?ipad可以用的手写笔推荐

随着IPAD的普及&#xff0c;一些学习党已经从传统的纸质教学走向了无纸化教学。所以&#xff0c;本来就是苹果品牌专利的电容笔&#xff0c;现在更是成为了炙手可热的产品&#xff0c;很多人都对这款售价近千元的电容笔充满了好奇。我认为&#xff0c;对于职业画师来说&#xf…

你“心累”吗?教你方法

解决“心累”的方法来了 前言一、“心累”的原因二、认识“心累”三、走出“心累”四、发现自己的“优势” 前言 不管是脑力劳动还是体力劳动&#xff0c;工作生活本身并没有多么累&#xff0c;但总感觉累。这就是我今天想说的话题&#xff1a;心累。 如果你也被这个状态折磨&a…

用好 mysql 分区表

为了保证mysql的性能&#xff0c;我们都建议mysql单表不要太大&#xff0c;也经常有人问我这样的问题&#xff0c;整体来说呢&#xff0c;建议是&#xff1a;单表小于2G&#xff0c;记录数小于1千万&#xff0c;十库百表。如果但行记录数非常小&#xff0c;那么记录数可以再偏大…

粮油企业MES系统源码 粮油质量管控防伪溯源系统

粮油企业MES系统源码 粮油企业质量管控防伪溯源系统源码 粮油企业ERP系统源码 农产品MES系统源码 农产品溯源系统源码 利用物联网、云计算 、区块链、人工智能、5G等先进技术&#xff0c;结合特有的码码关联和RSA加密验证技术&#xff0c;开发的一套粮油质量管控防伪溯源系统&…

C++ 设计模式 包装类型(Wrapper Type)的运用:运算符重载的包装类型策略

目录标题 1. 运算符重载与包装类型&#xff08;Wrapper Type&#xff09;1.1 运算符重载的基本概念1.2 包装类型的定义与应用1.3 运算符重载与包装类型的结合 2. 包装类型的设计与实现2.1 包装类型的基本设计2.2 运算符重载的实现2.3 包装类型与原始类型的转换 3. 包装类型的性…

基于jsp+mysql+Spring+mybatis+Springboot的SpringBoot停车场停车位管理系统

运行环境: 最好是java jdk 1.8&#xff0c;我在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以&#xff0c;如果编译器的版本太低&#xff0c;需要升级下编译器&#xff0c;不要弄太低的版本 tomcat服务器环…

阿里巴巴内部10w字Java面试小抄火了,完整版开放下载

Java 面试 “金九银十”这个字眼对于程序员应该是再熟悉不过的了&#xff0c;每年的金九银十都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介绍项目都是技能中的重中之重&#xff0c;它…

【3步教程】如何使用商城小程序源码打造自己的商城?

作为电商行业的领头人&#xff0c;在移动端上拥有一款独立小程序绝对是不能缺少的&#xff0c;而使用商城小程序源码打造自己的商城则是最佳的选择之一。本文将教您如何在3步之内&#xff0c;快速高效地使用商城小程序源码&#xff0c;打造属于自己的小程序商城。 步骤一&…