当前位置: 首页 > news >正文

【数据结构与算法】第3课—数据结构之单链表

文章目录

  • 1. 什么是链表
  • 2. 单链表
    • 2.1 单链表的初始化和打印
    • 2.2 单链表的尾插和头插
    • 2.3 单链表的尾删和头删
    • 2.4 单链表查找节点
    • 2.5 单链表在指定位置之前/之后插入数据
    • 2.6 单链表删除节点和删除pos之后的节点
    • 2.7 销毁链表
  • 3. 单链表和顺序表对比

1. 什么是链表

  • 链表是在逻辑结构上连续,而在物理结构上不一定连续的存储结构
  • 链表由一个一个的节点组成,并且这些节点是在堆上申请空间
  • 单链表的每个节点一般有两个变量,一个变量存储数据,另一个变量里面是下一个节点的地址,最后一个节点里面的那个变量存储的是空指针

在这里插入图片描述


在这里插入图片描述


2. 单链表

  • 从前往后,单向的一个链表

2.1 单链表的初始化和打印

  • 初始化

在这里插入图片描述


  • 打印单链表

在这里插入图片描述


2.2 单链表的尾插和头插

  • 尾插

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


  • 头插

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2.3 单链表的尾删和头删

  • 尾删

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


  • 头删

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2.4 单链表查找节点

在这里插入图片描述


在这里插入图片描述


2.5 单链表在指定位置之前/之后插入数据

  • 单链表在指定位置之前插入数据

在这里插入图片描述


在这里插入图片描述


  • 单链表在指定位置之后插入数据

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2.6 单链表删除节点和删除pos之后的节点

  • 单链表删除节点pos

在这里插入图片描述


在这里插入图片描述


  • 单链表删除节点pos之后的节点

在这里插入图片描述


在这里插入图片描述


2.7 销毁链表

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3. 单链表和顺序表对比

  • 顺序表头部/中间的插入删除的时间复杂度是O(N),而单链表头部的插入删除、删除指定位置之后的节点、指定位置之后插入数据的时间复杂度是O(1)
  • 而顺序表尾部插入/删除的时间复杂度是O(1),单链表尾部插入/删除、删除指定位置节点、指定位置之前插入节点的时间复杂度是O(N)
  • 顺序表需要增容,而且存在一定的空间浪费,而单链表每次只需要申请一个节点大小,不存在浪费空间的情况

相关文章:

【数据结构与算法】第3课—数据结构之单链表

文章目录 1. 什么是链表2. 单链表2.1 单链表的初始化和打印2.2 单链表的尾插和头插2.3 单链表的尾删和头删2.4 单链表查找节点2.5 单链表在指定位置之前/之后插入数据2.6 单链表删除节点和删除pos之后的节点2.7 销毁链表 3. 单链表和顺序表对比 1. 什么是链表 链表是在逻辑结构…...

linux—基础命令及相关知识

1.0Linux的哲学思想(优势) 1、一切都是一个文件,一切硬件设备包括硬件接口都可以以文件形式显示 2、系统小型,轻量级,300个包(不装桌面的情况下) 3、避免令人困惑的用户界面(图形…...

Spring Boot 实现 WebSocket(注解方式)

本文介绍如何使用 Spring Boot 的注解方式实现一个简单的 WebSocket 服务&#xff0c;支持客户端与服务器之间进行实时通信。 1. 引入依赖 在 pom.xml 文件中添加 WebSocket 相关依赖。 <dependencies><!-- Spring Boot WebSocket 支持 --><dependency>&l…...

windows下Qt的安装方法

Qt Creator是个人非常喜欢的一款开发工具&#xff0c;喜欢用其来开发C和CPC平台项目&#xff0c;当然也可以用其来开发Android和Auto平台项目&#xff0c;但其现在采用离线安装&#xff0c;限于网络问题&#xff0c;安装速度非常慢。 现在介绍一种可以完成快速的安装方法。 下…...

嵌入式面试题 ARM常见面试题

一.ARM内核分为哪几类?他们之间有什么区别? ARM内核主要分为三类,Cortex-A,Cortex-R,Cortex-M三种,A代表Applications,向用户提供全方位解决方案,主要用于复制的应用场合,比如智能手机、移动计算平台,数字电视、机顶盒、打印机或服务器等。R代表Real-Time Embedded,…...

分布式调度器--Spring Task 的使用

目录 1、启动类&#xff08;App.java&#xff09;上加EnableScheduling注解&#xff1a; 开启基于注解的任务调度器 2、同步定时任务 3、多线程&#xff08;异步&#xff09;定时任务 3.1 配置线程池 3.2 开启异步支持 3.3 定义异步方法 4、Api说明 4.1 fixedDelay 4.…...

Java应用程序的测试覆盖率之设计与实现(四)-- jacoco-maven-plugin

一、什么是jacoco-maven-plugin jacoco源码jacoco文档 除了使用jacoco.cli.jar导出并生成覆盖率报告外&#xff0c;还可以使用jacoco-maven-plugin&#xff0c;它是maven集成了jacoco的一款插件。 在工程pom.xml里配置插件jacoco-maven-plugin。 <plugin><groupId&g…...

UI 提供的 progress-step 要怎么实现?

前言 这天突然收到了 UI 修改设计稿的消息通知&#xff1a;“xxx 已修改 xxx 项目并 了你&#xff0c;请及时查看变更内容”&#xff0c;一条、两条、三条 …&#xff0c;修改消息铺天盖地而来&#xff0c;然后就什么都看不到了&#xff08;因为我选择开启消息免打扰&#xf…...

DBSwitch和Seatunel

一、DBSwitch 什么是DBSwitch?它主要用在什么场景&#xff1f; 通过步骤分析可以看到这个是通过配置数据源&#xff0c;采用一次性或定时方案&#xff0c;同步到数据仓库的指定表&#xff0c;并且指定映射关系的工具。有点类似于flinkcdc的增量同步。 参考&#xff1a; dbs…...

【日志】力扣刷题 -- 轮转数组

2024.10.06 【力扣刷题】 经典面试150—转轮数组—中等 189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; 第一次做&#xff0c;暴力循环 // 超出时间限制 void rotate(int* nums, int numsSize, int k) {for(int i 0; i < k; i){int right numsSize - 1;int temp…...

Java 项目 Dockerfile 示例:从基础镜像选择到环境变量配置的详细指南

Java 项目 Dockerfile 示例&#xff1a;从基础镜像选择到环境变量配置的详细指南 本文提供了一个 Java 项目的 Dockerfile 示例&#xff0c;展示了如何为 Java 应用创建高效的 Docker 镜像。Dockerfile 从 OpenJDK 8 的 Java 运行环境开始&#xff0c;配置了工作目录和 JVM 启…...

WebGL编程指南 - 高级变换与动画基础

学习使用一个矩阵变换库&#xff0c;该库封装了矩阵运算的数学细节。快速上手使用该矩阵库&#xff0c;对图形进行复合变换。在该矩阵库的帮助下&#xff0c;实现简单的动画效果。 矩阵变换库&#xff1a;cuon-matrix.js OpenGL中的函数&#xff1a; 书中 cuon-matrix.js 函数…...

银行客户贷款行为数据挖掘与分析

#1024程序员节 | 征文# 在新时代下&#xff0c;消费者的需求结构、内容与方式发生巨大改变&#xff0c;企业要想获取更多竞争优势&#xff0c;需要借助大数据技术持续创新。本文分析了传统商业银行面临的挑战&#xff0c;并基于knn、逻辑回归、人工神经网络三种算法&#xff0…...

制程质量管理方案设计

质量管理系统框架——QMS 涵盖产生产制造体系的全生命周期的质量管理过程 与SAP、WMS、MES、OA等业务系统进行集成&#xff0c;整合各业务系统中的质量信息 利用整合的全价值链质量信息&#xff0c;寻找质量改进点和质量创新点 系统功能模块管理 系统管理&#xff1a;用户管理…...

uniapp移动端优惠券! 附源码!!!!

本文为常见的移动端uniapp优惠券&#xff0c;共有6种优惠券样式&#xff08;参考了常见的优惠券&#xff09;&#xff0c;文本内容仅为示例&#xff0c;您可在此基础上调整为你想要的文本 预览效果 通过模拟数据&#xff0c;实现点击使用优惠券让其变为灰色的效果&#xff08;模…...

【分布式技术】中间件-zookeeper安装配置

文章目录 安装部署1. 安装ZooKeeper2. 配置ZooKeeper3. 启动ZooKeeper服务器4. 使用ZooKeeper命令行客户端5. 使用ZooKeeper的四个基本操作6. ZooKeeper集群模式7. 安全和权限8. 监控和日志 相关文献 安装部署 在Linux环境中操作ZooKeeper通常涉及以下几个方面&#xff1a; 1…...

高等数学 7.6高阶线性微分方程

文章目录 一、线性微分方程的解的结构*二、常数变易法 方程 d 2 y d x 2 P ( x ) d y d x Q ( x ) f ( x ) (1) \cfrac{\mathrm{d}^2 y}{\mathrm{d}x^2} P(x) \cfrac{\mathrm{d}y}{\mathrm{d}x} Q(x) f(x) \tag{1} dx2d2y​P(x)dxdy​Q(x)f(x)(1) 叫做二阶线性微分方程。…...

LSP的建立

MPLS需要为报文事先分配好标签&#xff0c;建立一条LSP&#xff0c;才能进行报文转发。LSP分为静态LSP和动态LSP两种。 静态LSP的建立 静态LSP是用户通过手工为各个转发等价类分配标签而建立的。由于静态LSP各节点上不能相互感知到整个LSP的情况&#xff0c;因此静态LSP是一个…...

huggingface的数据集下载(linux下clone)

1. 安装lfs sudo apt-get install git-lfs 或者 apt-get install git-lfs 2. git lfs install git lfs install 3. git clone dataset包 第2&#xff0c;3步骤的截图如下&#xff1a;...

Java使用dom4j生成kml(xml)文件遇到No such namespace prefix: xxx is in scope on:问题解决

介绍addAttribute和addNamepsace: addAttribute 方法 addAttribute 方法用于给XML元素添加属性。属性&#xff08;Attributes&#xff09;是元素的修饰符&#xff0c;提供了关于元素的额外信息&#xff0c;并且位于元素的开始标签中。属性通常用于指定元素的行为或样式&#…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...