浅谈线性表——链表

news2024/9/25 13:25:31

文章目录

  • 一、ArrayList的缺陷
  • 二、什么是链表?
  • 三、自我实现一个单向不带头非循环结构的链表
    • 3.1、实现代码
    • 3.2、代码解析
  • 四、自我实现一个双向不带头非循环结构的链表
    • 4.1、实现代码

一、ArrayList的缺陷

前面学习了顺序表,顺序表在知道下标时可以快速的查找元素,但是:
a、顺序表尾插、尾删的时间复杂度为O(1),但是中间/头部的插入删除时间复杂度为O(N)
b、扩容时需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗
c、 扩容一般是呈2倍的增长,势必会有一定的空间浪费

因此引入了一种新的数据结构——链表,能够解决上述的问题。

二、什么是链表?

链表(LinkedList):将数据以链式形式进行存储。链表中的每一个元素称为节点(结点),节点中由2部分组成,一部分存放数据元素,一部分存放下一个数据元素的地址。

链表逻辑上是连续的,物理上不一定连续,是因为链表的连续性是通过地址连接起来,并不像顺序表那样是一段物理地址连续的存储单元依次存储数据元素。
在这里插入图片描述

在这里插入图片描述

三、自我实现一个单向不带头非循环结构的链表

3.1、实现代码

代码链接

3.2、代码解析

(1)、createMyLinkedList()方法
在这里插入图片描述
(2)、display()方法(遍历链表)
在这里插入图片描述
在这里插入图片描述
(3)、头插法:public void addFirst(int data)
时间、空间复杂度皆O(1)
在这里插入图片描述
(4)、尾插法:public void addLast(int data)
时间复杂度O(n)、空间复杂度O(1)
在这里插入图片描述
(5)、 随机插入:public void addIndex(int index,int data)
时间复杂度O(n)、空间复杂度O(1)
在链表的任意位置插入:
(6)、删除第一个出现的指定key节点: public void remove(int key)
时间复杂度O(n)、空间复杂度O(1)在这里插入图片描述
(7)、删除链表中所有等于val值的节点:public void removeAllKey(int key)
在这里插入图片描述

四、自我实现一个双向不带头非循环结构的链表

在这里插入图片描述

4.1、实现代码

代码链接

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

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

相关文章

python应用之random模块(居然还有那么多的随机算法函数)

random 是 Python 的一个常用的内置模块,模块提供了生成随机数的功能,包含了多种生成随机数的函数,比如生成随机整数、随机浮点数、从序列中随机选择元素等。 使用 random模块 要使用 random模块,直接导入它即可。 import rand…

spring揭秘09-aop03-aop织入器织入横切逻辑与自动织入

文章目录 【README】【1】spring aop的织入【1.1】使用ProxyFactory 作为织入器【1.2】基于接口的代理(JDK动态代理,目标类实现接口)【补充】 【1.2】基于类的代理(CGLIB动态代理,目标类没有实现接口)【1.2…

Nginx: 配置项之autoIndex模块与Nginx变量

autoIndex模块 autoindex模块它所实现的一个基本功能,是当用户请求以 / 结尾式的URL,它会列出对应的目录结构比如说, 在实际的生态环境中,内部系统可能经常需要为用户提供一些下载功能。可能需要列出来某一个磁盘上的一个文件, 比…

【D-DCVRP】求解DCVRP改进贪婪算法(三)

一、Held-Harp模型 海尔德和卡尔普在1970年提出景点模型,用于求解TSP问题的最优解下界 该模型同样可以用于DCVRP问题,既有定理1成立。 定理1:根据Held-Karp模型使用向量 π = ( 0 , π 1 , π 2 , ⋯   , π n ) \pi=(0,\pi_1,\pi_2,\cdots,\pi_n) π=(0,π1​,π2​,⋯…

Datawhale第五期夏令营-CV竞赛

CV竞赛 0.赛事报名租用4090 1.开始运行下载文件提交结果 2.内容解释赛题背景赛题目标社会价值评分规则baseline精读代码什么是YOLO 主要代码内容精读使用Ultraalytics运行代码 0.赛事报名 赛事官网:https://www.marsbigdata.com/competition/details?id3839107548872 租用40…

【Redis】RDB和AOF持久化

RDB和AOF持久化 一、什么是持久化?二、RDB三、AOF 一、什么是持久化? 数据一般写在内存上,但是当重新启动计算机内存数据是会丢失的,而硬盘中的数据是不会丢失的,所以,当我们把数据从内存放到硬盘中的话就…

解决Windows下载完anaconda之后,在pycharm中使用anaconda

怎么下载anaconda我就不详细讲了,就是官方下载基本嫩都是下一步下一步你就可以 一、首先配置环境变量如图 二、查看anaconda情况 三、打开pycharm,如下图操作 ## 注意这里的.bat文件需要在你下载到的anaconda中去找 完毕

6款ai智能文章改写软件,轻松实现文章自动改写

在内容创作领域,改写文章是一项费时费力的工作。为了让创作者从繁琐的改写任务中解脱出来,本文将为你详细介绍六款ai智能文章改写软件,助你轻松实现文章自动改写,提升创作效率。 一、创作者的痛点:文章改写的挑战 作为…

【C++ Primer Plus习题】5.5

问题: 解答: #include <iostream> using namespace std;#define MONTHSCOUNT 12int main() {string months[MONTHSCOUNT] { "January","February","March","April","May","June","July","…

高斯混合模型原理及Python实践

高斯混合模型&#xff08;Gaussian Mixture Model&#xff0c;简称GMM&#xff09;是一种统计学中的概率模型&#xff0c;用于表示由多个高斯分布&#xff08;正态分布&#xff09;混合组成的数据集合。其核心原理基于假设数据集中的每个数据点都是由多个潜在的高斯分布之一生成…

SAP商业地产管理(RE-FX)

SAP 提供了多个模块来支持租赁业务流程和会计处理&#xff0c;这些模块包括但不限于&#xff1a; SAP Leasing&#xff1a;这是一个为租赁公司提供的行业解决方案&#xff0c;支持从租赁起源到中期变更和租赁结束选项的所有阶段的业务流程。SAP Leasing 集成了 SAP CRM 和 SAP …

Java 中的 BIO, NIO, AIO 原理以及示例代码

本文参考&#xff1a; https://blog.csdn.net/yhl_jxy/article/details/79335692 https://www.cnblogs.com/cuzzz/p/17290070.html https://www.cnblogs.com/cuzzz/p/17473398.html https://pdai.tech/md/java/io/java-io-nio-select-epoll.html 最近准备看 Kafka 源码&#xf…

2-76 基于matlab的加权平均融合算法

基于matlab的加权平均融合算法&#xff0c;进行灰度或彩色多模态医学图像融合&#xff0c;程序具体很好的通用性&#xff0c;提供图像融合客观评价指标&#xff0c;还给出3组珍贵的已配准的图像。程序已调通&#xff0c;可直接运行。 2-76 多模态医学图像融合 - 小红书 (xiaoho…

C语言 之 浮点数在内存中的存储 详细讲解

文章目录 浮点数浮点数的存储浮点数的存储浮点数的读取例题 浮点数 常见的浮点数&#xff1a;3.14159、1E10&#xff08;表示1*10^10&#xff09;等 浮点数家族包括&#xff1a; float、double、long double 类型。 浮点数表示的范围在float.h 中有定义 浮点数的存储 浮点数…

一个证券交易系统的设计

时间&#xff1a;2024年08月25日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 音频&#xff1a;https://xima.tv/1_JAlD44?_sonic0 希望大家帮个忙&#xff01;如果大家有工作机会&#xff0c;希望帮小蒋内推一下&#xff0c…

墨者学院 手工注入题解(oracle数据库)

简介 Oracle 数据库系统&#xff0c;是美国ORACLE公司&#xff08;甲⻣⽂&#xff09;提供的以分布式数据库为核⼼的⼀组软件 产品。是⽬前世界上使⽤最为⼴泛的&#xff0c;数据库管理系统。 以下是手工注入的流程&#xff1a; 1、判断注入点 使用 and 11 进行拼接 2、确定…

C语言-实参和形参数据传递的特点及使用技巧

&#x1f30f;个人博客&#xff1a;尹蓝锐的博客 引言&#xff1a; 在我们介绍实参和形参数据传递的特点及使用技巧之前&#xff0c;我们先拿一个有关值传递的典型错误案例来剖析一下。 典型错误举例&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h&g…

学习笔记——TypeScript

文章目录 介绍TS增加类型支持的原因&#xff1a;安装typescript运行TS文件TS常用类型类型标注位置字符串类型、数字类型、布尔类型字面量类型interface类型class类 总结 开发阶段规范代码&#xff0c;使代码更严谨 介绍 TypeScript&#xff08;简称&#xff1a;TS&#xff09;…

《操作系统---PV操作》(同步与互斥)

一、练习题 面包师有很多面包&#xff0c;由n名销售人员推销。每名顾客进店后按序取一个号&#xff0c;并且等待叫号&#xff0c;当一名销售人员空闲时&#xff0c;就按序叫下一个号。可以用两个整型变量来记录当前的取号值和叫号值&#xff0c;试设计一个使销售人员和顾客同步…

PyTorch深度学习模型训练流程的python实现:回归

回归的流程与分类基本一致&#xff0c;只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下&#xff1a; 注意&#xff1a;预测值与真实值图像处理为按真实值排序&#xff0c;图中呈现…