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

数据结构之单链表

在这里插入图片描述在这里插入图片描述

一、链表的组成

链表是由一个一个的节点组成的,节点又是一个一个的对象,
相邻的节点之间产生联系,形成一条链表。

例子:假如现在有两个人,A和B,A保存了B的联系方式,这俩人之间就有了联系。
A和B就好比是节点,一个节点保存另一个节点的地址,这两个节点之间就产生了联系。

二、链表的重要的两类

一、单向非循环不带头链表的特点

1、单链表的尾节点

例子1:一条横线都有结束的标志,当这条横线的尾端不再延申,这条横线就是结束了。
例子2:一个人的手机通讯录中没有保存任何人的联系方式,通讯录中显示“空”这个汉字。

这条横线就好比是单链表,单链表也应该有结束的标志。
刚才这个人就好比是单链表中的最后一个节点,也就是尾节点,这个节点没有保存任何一个节点的地址,应该显示为null。

2、相邻节点之间的关系

例子:现在有一排宝箱,第一个宝箱里面放着第二个宝箱的钥匙,第二个宝箱里面放着第三个宝箱的钥匙。

宝箱就好比是节点,钥匙就好比是对象的地址,相邻的节点,前面的节点保存后面的节点的地址。

3、如何通过一个引用变量head,访问这条链表中的所有节点。

在解释这个问题之前,有1个知识需要我们了解:

1:例子:如果家里的人想要联系在外地打拼的年轻人,需要存下他们的电话号码或者地址,通过电话号码和地址就可以找到他,否则是无法是找到的。
年轻人就好比是Java中的对象,如果想要找到存放在堆中的对象,需要把对象的地址存到引用变量中,通过地址就可以找到这个对象。

例子:就拿我们刚才宝箱那个例子来说,如果我们想要访问每一个宝箱,看看里面有什么好东西,必须要得到第一个宝箱的钥匙,打开第一个宝箱,得到第二个宝箱的钥匙,打开第二个宝箱,得到第三个宝箱的钥匙,以此类推。
宝箱就是节点,钥匙就是地址。

结合这两个例子和上面说的相邻节点之间的关系,我们可以理解:
要得到第一个节点的地址,才能访问所有节点。
所以,将头节点的地址保存到一个引用变量head中,通过head,成功访问链表中的所有节点

1、产生的问题

例子:我一只手只能放一个东西,如果想让我去拿另一个东西,我需要把目前手上的东西扔了,再去拿。
引用变量只能放一个对象的地址,如果我直接通过head依次去保存每一个对象的地址,访问每一个节点,那么访问完之后,head里面放的是null,第一个节点的地址就得不到了。
所以应该找个“替死鬼”,声明一个新的变量,将head里面的值拷贝到新的变量中

http://www.lryc.cn/news/6742.html

相关文章:

  • 儿子跟妈妈关系不好怎么办?这里有解决办法!
  • 论文投稿指南——中文核心期刊推荐(植物保护)
  • 华科万维C++章节练习4_6
  • 详解子网技术
  • chatGTP的全称Chat Generative Pre-trained Transformer
  • hive数据存储格式
  • mysql数据库备份与恢复
  • 《NFL橄榄球》:辛辛那提猛虎·橄榄1号位
  • 2、线程、块和网格
  • C++ 算法主题系列之贪心算法的贪心之术
  • 请注意,PDF正在传播恶意软件
  • 【Kubernetes】【二】环境搭建 环境初始化
  • Python:每日一题之发现环(DFS)
  • C++设计模式(14)——享元模式
  • SpringCloud之Eureka客户端服务启动报Cannot execute request on any known server解决
  • 从零开始搭建kubernetes集群环境(虚拟机/kubeadm方式)
  • 【零基础入门前端系列】—表格(五)
  • C#开发的OpenRA的只读字典IReadOnlyDictionary实现
  • mulesoft MCIA 破釜沉舟备考 2023.02.14.06
  • Python网络爬虫 学习笔记(1)requests库爬虫
  • Splay
  • 智能网联汽车ASIL安全等级如何划分
  • Stable Diffusion 1 - 初始跑通 文字生成图片
  • 【cuda入门系列】通过代码真实打印线程ID
  • 【Python语言基础】——Python NumPy 数据类型
  • 数据工程师需要具备哪些技能?
  • Cosmos 基础 -- Ignite CLI(二)Module basics: Blog
  • Quartz 快速入门案例,看这一篇就够了
  • 图解LeetCode——1233. 删除子文件夹(难道:中等)
  • Doris--简单使用