数据结构 - 单链表

news/2024/5/19 3:41:10/文章来源:https://blog.csdn.net/jdhsgwhd/article/details/127158478

文章目录

    • 一、单链表
      • 1.单链表的定义
        • 1.1概念介绍
      • 2.如何用代码来定义一个单链表
      • *知识点
      • 3.单链表的插入删除
    • 未完待续...

一、单链表

1.单链表的定义

在这里插入图片描述

  • 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

1.1概念介绍

链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
以“结点的序列”表示线性表称作线性链表(单链表),单链表是链式存取的结构。

2.如何用代码来定义一个单链表

struct LNode{     //定义单链表节点类型ElemType data; //每个节点存放一个数据元素struct LNode *next; //指针指向下一个节点
};
struct Lnode *p = (struct LNode *)malloc(sizeof(struct LNode));
//添加一个新的节点,在内存中申请一个节点所需空间,并用指针p指向这个节点

在这里插入图片描述

typedef struct LNode{ElemType data;      //定义单链表节点类型struct LNode *next; //每个节点存放一个数据元素
}LNode,*LinkList;       //指针指向下一个节点
struct LNode{ElemType data;struct LNode *next;
};
typedef struct LNode LNode;
typedef struct LNode *LinkList;
  • 要表示一个单链表时,只需要声明一个头指针L,指向单链表的第一个节点
    LNode *L; //声明一个指向单链表第一个节点的指针;
    LinkList L; //声明一个指向单链表第一个节点的指针;
typedef struct LNode{ElemType data;struct LNode *next;
}LNode,*LinkList;
LNode * GetElem(LinkList L,int i){itn j = 1;LNode *p = L -> next;if(i == 0)return L;if(i < 1)return NULL;while(p != NULL && j < i){p = p -> next;j++;
}
return p;}
  • 不带头结点和带头结点他们之间的区别:
    在这里插入图片描述

*知识点

本章知识点回顾:
在这里插入图片描述

3.单链表的插入删除

单链表的常用操作:
在这里插入图片描述在这里插入图片描述

  • 1.按位序插入(带头结点)
    Listlnsert(&L,i,e):插入操作。在表中的第i个位置上插入指定元素e。
    在这里插入图片描述
    代码实现:
bool ListInsert(LinkList &L, int i, ElemType e){if(i< 1)return false;Lnode *p;   //指针p指向当前扫描到的节点int j = 0;  //当前p指向的事第几个节点p = L;      //L指向头结点 头结点是第0个节点(不存在数据)while(p != NULL && j < i - 1){ //循环找到第i-1个节点p = p -> next;j++;}if(p == NULL)   //i值不合法return false;LNode *s = (LNode *)malloc(sizeof(LNode));s -> data = e;s -> next = p -> next;p -> next = s;  //将节点s链接到p后return true;   //插入成功
}

未完待续…

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

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

相关文章

Halcon快速入门笔记3

read_image (Image, ‘surface_scratch’) invert_image (Image, ImageInverted) get_image_size (ImageInverted, Width, Height) gen_sin_bandpass (ImageBandpass, 0.4, ‘none’, ‘dc_center’, Width, Height) fft_generic (ImageInverted, ImageFFT, ‘to_freq’, -…

【JavaWeb】前置知识:CSS与JavaScript知识汇总

本文被 系统学习JavaWeb 收录&#xff0c;点击订阅 写在前面 大家好&#xff0c;我是黄小黄&#xff01;经过上一篇 从Html入门JavaWeb 的学习&#xff0c;想必大家对标签都有了一定的认识。本文将通过案例&#xff0c;讲解CSS与JavaScript的基础知识&#xff0c;文章内容比较…

SSM+Vue个人健康管理系统 个人健康档案系统 个人健康信息管理系统Java

SSM+Vue个人健康管理系统 个人健康档案系统 个人健康信息管理系统Java💖🔥作者主页:计算机毕设老哥🔥 💖精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻Java实战项目专栏 Python实战项目专栏 安卓实战项目专栏 微信小程序实战项目专栏目录Java实战项…

【数据结构从0到1】第九篇:图

文章目录一、图的基本概念二、图的存储结构2.1 邻接矩阵2.2 邻接表三、图的遍历3.1 图的广度优先遍历3.2 图的深度优先遍历四、最小生成树4.1 Kruskal算法4.2 Prim算法五、最短路径5.1 单源最短路径--Dijkstra算法5.2 单源最短路径--Bellman-Ford算法5.3 多源最短路径--Floyd-W…

基于Java开发的五子棋游戏APP设计与实现

目录 一、项目概述 1 &#xff08;一&#xff09;安卓游戏发展趋势 1 &#xff08;二&#xff09;开发安卓游戏的意义 1 二、项目需求分析 2 &#xff08;一&#xff09;功能需求分析 2 &#xff08;二&#xff09;性能需求分析 2 &#xff08;三&#xff09;可行性分析 3 &…

【点云处理】点云法向量估计及其加速(1)

点云法向量是3D点云一个极其重要的几何表面特征&#xff0c;众多的点云处理算法都依赖精确的法向量估计&#xff0c;例如点云分割&#xff0c;点云去噪等。在自动驾驶领域&#xff0c;面对特殊场景我们主要依赖点云法向量进行场景分割。估计点云法向量需要得到该点的邻域内点&a…

nodejs+vue+elementui幼儿园管理系统python java php

本设计主要分为学生家长&#xff0c;管理员和教师三个角色&#xff0c;其中学生家长功能有注册登查看幼儿信息&#xff0c;查看缴费信息&#xff0c;申请请假&#xff0c;查看体检信息等&#xff1b;教师的功能有登陆系统&#xff0c;对自己的幼儿学生&#xff0c;班级&#xf…

谷粒商城 集群篇 (二) --------- K8s 集群安装

目录一、kubeadm二、前置要求三、部署步骤四、环境准备五、安装环境1. 安装 docker① 卸载 docker② 安装 Docker-CE③ 配置 docker 加速④ 启动 docker & 设置 docker 开机自启2. 添加阿里云 yum 源3. 安装 kubeadm&#xff0c;kubelet 和 kubectl六、部署 k8s-master1. m…

STL之string

更新string&#xff0c;这段时间学习了stl&#xff0c;发现共性的东西很多&#xff0c;string&#xff0c;vector&#xff0c;list等&#xff0c;弄懂他们的逻辑框架很重要&#xff0c;其实也是stl的规范&#xff0c;文章更新内容不管这些函数怎么用&#xff0c;就从大逻辑来讲…

Java项目:SSH土地信息管理系统平台

作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目包含管理员与用户两种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,用户管理,分类管理,档案管理等功能。 用户角色包含…

基于STM32的光敏传感器数据采集系统-物联网应用系统设计项目开发

目录1 项目概述1.1 项目介绍1.2 项目开发环境1.3 小组人员及分工2 需求分析2.1 系统需求分析2.2 可行性分析2.3 项目实施安排3 系统硬件设计3.1 系统整体硬件电路设计3.2 STM32 最小系统电路设计3.3 传感器模块电路设计3.4 光敏电阻模块电路设计4系统软件设计4.1 系统整体流程设…

源码、反码、补码和精度损失

数据类型转换,转换过程中可能导致溢出或损失精度 1.源码:源码就是二进制的数字并且开头的一位代表符号位。例:(+1)的源码:0000 0001(-1)的源码:1000 0001 2.反码:正数的反码是其本身负数的反码是符号位不懂其他位取反例: (+1)的反码:0000 0001(-1)的反码:1111 …

TC8:TCP_CLOSING_03-13

TCP_CLOSING_03: RST with DATA 目的 TCP允许接收的RST消息包含数据 测试步骤 Tester:让DUT移动到ESTABLISHED状态Tester:发送RST报文,包含一些数据DUT:不发送任何响应Tester:验证DUT在CLOSED状态期望结果 3, DUT:不发送任何响应 4, Tester:验证DUT在CLOSED状态 CANoe …

谷歌味儿

咱们从小就被教育过&#xff0c;决定一个人成败的最重要因素不是智商、暂时的能力&#xff0c;而是性格和品质。这是如此的正确&#xff0c;以至于很多公司暗暗将这个作为候选人的衡量标准。比如咱们常听到的“X里味儿”。今天咱们看看“谷歌味儿“。谷歌内部明确要求的三大品质…

spring:beanfactory与applicationcontext的设计

beanfactory接口提供的方法:getBean,getBeanProvider,containsBean,isSingleton,getType,getAliases listableBeanFactory: 不会取到手动注册的bean,为什么要这么做呢,因为有些bean属于 SpringFramework 内部使用的,这样做的目的是 SpringFramework 不希望咱开发者直接…

恶意代码分析实战 windbg内核恶意代码分析 lab 10-1 10-2 10-3

Lab 10-01 本实验包括一个驱动程序和一个可执行文件。你可以从任意位置运行可执行文件,但为了使程序能够正常运行,必须将驱动程序放到C:\Windows\System32目录下,这个目录在受害者计算机中已经存在。可执行文件是Lab10-01.exe,驱动程序是Lab 10-01.sys. 问题 1.这个程序是否…

公众号网课搜题接口使用-公众号使用

公众号网课搜题接口使用-公众号使用 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&…

(43)STM32——触摸屏实验笔记

目录 学习目标 成果展示 硬件知识 触摸屏 分类 区别 寄存器 控制命令寄存器&#xff08;0X8040&#xff09; 配置寄存器组&#xff08;0X8047~0X8100&#xff09; 产品 ID 寄存器&#xff08;0X8140~0X8143&#xff09; 状态寄存器&#xff08;0X814E&#xff09; …

【网络】Wireshark对远程主机抓包|过滤|原理

目录 对远程Linux主机进行抓包 对Windows主机抓包 过滤 1.过滤IP&#xff0c;如来源IP或者目标IP等于某个IP 2.过滤端口 3.过滤协议 4.过滤MAC 5.包长度过滤 6.http模式过滤 7.TCP参数过滤|过滤标志 SYN|RST|ACK…… 8.包内容过滤 9.dns模式过滤 10.DHCP 11.msn 12. wireshark字…

火车头采集下载图片的位置和URL地址的更换

火车头采集下载图片的位置和URL地址的更换 1&#xff1a; 先明白&#xff0c; img 标签里面有一个 src 地址 2&#xff1a; 明白下面这图片的内容 下载图片勾选&#xff0c;是必须的 文件保存目录 它代表了2个意思 1是下载的位置【 没有给完全目录&#xff0c;它会默认C盘下载…