数据结构第三篇【链表的相关知识点一及在线OJ习题】

数据结构第三篇【链表的相关知识点一及在线OJ习题】

      • 链表
      • 链表的实现
      • 链表OJ习题
      • 顺序表和链表的区别和联系

本文章主要讲解关于链表的相关知识,喜欢的可以三连喔
😀😃😄😄😊😊🙃🙃
在这里插入图片描述
😀😃😄😄😊😊🙃🙃

链表

链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。

实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
单向 双向
带头 不带头
循环 非循环

单链表,双向链表,循环链表如下图所示
在这里插入图片描述
带头,不带头,如下图所示
在这里插入图片描述
虽然有这么多的链表的结构,但是我们重点掌握两种:

  • 无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。

在这里插入图片描述

  • 无头双向链表:在Java的集合框架库中LinkedList底层实现就是无头双向循环链表.

在这里插入图片描述

链表的实现

// 1、无头单向非循环链表实现
public class SingleLinkedList {
 //头插法
public void addFirst(int data);
 //尾插法
public void addLast(int data);
 //任意位置插入,第一个数据节点为0号下标
public boolean addIndex(int index,int data);
 //查找是否包含关键字key是否在单链表当中
public boolean contains(int key);
 //删除第一次出现关键字为key的节点
public void remove(int key);
 //删除所有值为key的节点
public void removeAllKey(int key);
 //得到单链表的长度
public int size();
 public void display();
 public void clear();
 }
 // 2、无头双向链表实现
public class DoubleLinkedList {
 //头插法
public void addFirst(int data);
 //尾插法
public void addLast(int data);
 //任意位置插入,第一个数据节点为0号下标
public boolean addIndex(int index,int data);
 //查找是否包含关键字key是否在单链表当中
public boolean contains(int key);
 //删除第一次出现关键字为key的节点
public void remove(int key);
 //删除所有值为key的节点
public void removeAllKey(int key);
 //得到单链表的长度
public int size();
 public void display();
 public void clear();
 }

链表OJ习题

大家可以做做习题,感悟链表的精彩
删除链表中等于给定值 val 的所有节点

反转一个单链表

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。

输入一个链表,输出该链表中倒数第k个结点。

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

链表的回文结构。

顺序表和链表的区别和联系

顺序表:一白遮百丑 白:空间连续、支持随机访问
丑:1.中间或前面部分的插入删除时间复杂度O(N)
2.增容的代价比较大。

链表:一(胖黑)毁所有
胖黑:以节点为单位存储,不支持随机访问
所有:1.任意位置插入删除时间复杂度为O(1) 2.没有增容问题,插入一个开辟一个空间。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo 自定义 Filter 编码实例

Dubbo的Filter机制为我们做应用的扩展设计提供了很多可能性,这里的Filter也是“责任链”机制的一种实现场景,作为Java码农,我们也经常接触到很多责任链的实现场景,如Tomcat进入Servlet前的filter,如Spring Aop代理的链…

性能飙升50%,react-virtualized-list如何优化大数据集滚动渲染

在处理大规模数据集渲染时,前端性能常常面临巨大的挑战。本文将探讨 react-virtualized-list 库如何通过虚拟化技术和 Intersection Observer API,实现前端渲染性能飙升 50% 的突破!除此之外,我们一同探究下该库还支持哪些新的特性…

自友科技破解走班教育排课难题

新高考后,校园教务都面临着晋级,其中走班教育的分班排课是个巨大的挑战。 所以在分班排课的时候要清楚一下几个问题 一是:清楚的核算学生的选考科目。学生选科提交后做好并承认,最好是在分班后不要改或很少的一部分人改动。 二是…

手写防抖debounce

手写防抖debounce 应用场景 当需要在事件频繁触发时,只执行最后一次操作,可以使用防抖函数来控制函数的执行频率,比如窗口resize事件和输入框input事件; 这段代码定义了一个名为 debounce 的函数,它接收两个参数:fn…

linux中最基础使用的命令

小白学习记录: 前情提要:Linux命令基础格式!查看 ls看目录的小技巧 进入指定目录 cd查看当前工作目录 pwd创建一个新的目录(文件夹) mkdir创建文件 touch查看文件内容 cat、more操作文件、文件夹- 复制 cp- 移动 mv- 删除【危险操作&#xff…

Scrum 的速度如何衡量和提高

了解你的 Scrum 团队的实际开发速度是非常多敏捷团队的诉求,而速度(Velocity)作为敏捷项目的度量工具,为管理者提供了对团队工作能力深入了解的机会。 这份指南将深入探讨 Scrum 中速度的概念,指导你如何进行计算&…

cURL error 60: SSL certificate problem: unable to get local issuer certifica

本地小程序把接口换到本地的服务器接口,然后就报错了: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 经查询查到:此问题的出现是由于没有配…

5月更新!优维EasyOps®平台7大新功能上线~

5月,优维EasyOps全平台产品能力又升级啦!👏 快来看看都有新增的功能与优化吧!👇 重点升级 架构可观测 1.系统监控态势感知 过去,用户在使用监控平台的过程中,存在如下问题: 告警…

基于单片机的超声波倒车雷达设计

摘 要:文 章设计了一种基于单片机的超声波倒车雷达系统,以 AT89C51 型单片机作为控制核心,集距离测量、显示,方位显示和危险报警于一体,以提高驾驶者在倒车泊车时的安全性和舒适性。本设计采用 Keil 软件对系统程序…

详解:重庆耶非凡的选品师项目有哪些优势?

在竞争激烈的电商市场中,重庆耶非凡科技有限公司凭借其独特的选品师项目,成功地在众多企业中脱颖而出。这一项目不仅体现了公司对市场趋势的敏锐洞察力,更彰显了其专业的选品能力和对消费者需求的深刻理解。 首先,耶非凡的选品师项…

军用电源性能测试有哪些测试项目?需要遵循什么标准?

为了确保军用电源在极端条件下能够正常工作,必须对其进行一系列严格的性能测试。这些测试不仅包括效率、电压调整率和负载调整率等基本参数的测试,还包括动态响应能力、绝缘电阻、耐压测试、温度系数以及高低温循环等综合性能的评估。 测试项目 效率 电压…

【Python Cookbook】S01E15 将名称映射到序列的元素中

目录 问题解决方案讨论 问题 对于访问列表或元组中的元素,我们通常使用索引或者下标的方法。但是这明显会降低代码的可阅读性。如果我们想通过命名来提高代码的可阅读性,减少结构中对位置的依赖,怎么做? 解决方案 python 提供 …

vscode运行命令报错:标记“”不是此版本中的有效语句分隔符。

1. 报错问题 标记“&&”不是此版本中的有效语句分隔符。 2. 解决办法 将 terminal 中的 owershell 改成 cmd 就 ok

我们如何收到卫星信号?(导航电文,载波与测距码)

卫星信号 在介绍所有卫星信号之前,首先要明确一些概念: 所有的卫星信号,都是一段电磁波,用户接收的,也是一段电磁波。 但是我们认知中的电磁波,就是一段波,就像我们打出去的交一样&#xff0c…

Vue——监听器简单使用与注意事项

文章目录 前言编写简单demo注意事项 前言 监听器,在官网中称为侦听器,个人还是喜欢称之为监听器。官方文档如下: vue 官网 侦听器 编写简单demo 侦听器在项目中通常用于监听某个属性变量值的变化,并根据该变化做出一些处理操作。…

ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据(带有Metadata),附常见问题

ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据(带有Metadata) 文章目录 ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据(带有Metadata)前言数据下载ENVI 5.3打开Landsat 8 C2L2级别数据ENVI 5.3打开Landsat 9 C2L2级别数据ENVI 6.0打开La…

vscode 默认终端(Terminal) 为CMD,但是新建是powerShell

☆ 问题描述 vscode 默认终端(Terminal) 为CMD,但是新建是powerShell ★ 解决方案 随便设置其他为默认,然后再设置回来CMD为默认就行了,实在不行就重装vscode吧… ✅ 总结 应该是vscode的小bug

海量消息下王者荣耀在 TDMQ Pulsar 的实践

关于王者荣耀 《王者荣耀》是由腾讯游戏开发的一款运营在Android、IOS平台上的MOBA类手游,属于多人联机在线竞技类游戏,于2015年11月26日在Android、IOS平台上正式公测。上线以来受到广大手游玩家的热爱,目前该游戏在手游排行中处于TOP 1的位…

【IDEA】-使用IDEA查看类之间的依赖关系

1、父子类的继承、实现关系 1.1、使用CTRL Alt U 选择 java class 依据光标实际指向的类位置 用实心箭头表示泛化关系 是一种继承的关系,指向父类 可以提前设置需要显示的类的属性、方法等信息 快捷键 Ctrl Alt S ,然后搜索 Diagrams 1.2、使用…

LeetCode刷题 | Day 1 最大子序列求和(Largest K Subsequence Sum)

LeetCode刷题 | Day 1 最大子序列求和(Largest K Subsequence Sum) 文章目录 LeetCode刷题 | Day 1 最大子序列求和(Largest K Subsequence Sum)前言一、题目概述二、解题方法2.1 贪心思路2.1.1 思路讲解2.1.2 伪代码 + 逐步输出示例2.1.3 Python代码如下2.1.4 C++代码如下…