【数据结构】-学习链表所需要的预备知识

news2024/11/25 20:52:45

知识点收集于网络,我会加以总结,如果把预备知识学好了。那么后面的操作就不难了

用节或者结都可以,不要在意字的差别

目录

一、头指针与头结点的概念

二、链表带头结点和不带头节点的区别

三、八大链表类型:

四、链表节点为什么需要动态开辟

 五、各类链表判空的条件


一、头指针与头结点的概念

1、头指针

通常使用“头指针”来标识一个链表。无论链表是否有头结点,头指针始终指向链表的第一个节点。如果有头结点,头指针就指向头结点。

2、头结点

在单链表的第一个节点之前附加一个节点,称为头结点。头结点的data域可以不设置任何信息,也可以记录表长等相关信息。但通常是不存储信息的。

二、链表带头结点和不带头节点的区别

设置头结点有什么好处?

A、第一个有效数据的节点的地址保存在头结点的指针域中,所以在链表的第一个位置上的操作和其他位置一样,无需特殊处理了。

B、便于空表和非空表的统一处理,无论链表是否为空,头指针都是指向头结点的非空指针。因此空表和非空表的处理也就统一了。

三、八大链表类型:

1、单向与双向

2、带头节点和不带头结点(又称带哨兵位头和不带哨兵位头)

3、循环和非循环

四、链表节点为什么需要动态开辟

为什么c链表节点要用malloc函数动态分配大小?因为在c语言中链表节点的大小是不确定的,因为他需要根据实际存储的数据类型和节点前后指针的大小进行调整。而我们之前学的顺序表,它的大小是可以固定的,也可以说是动态的。但是这里链表严格是要动态的才行

 五、各类链表判空的条件

1、单链表

带头节点:若带有头结点的链表为空,只需要整条链表只剩一个头结点,只需要头结点的后继节点不存在即可,即第一个存储数据的节点不存在即可,即头结点的next指针域为NULL。所以带头节点的单链表的判空条件:head->next==NULL

不带头结点:不带头节点的链表若要为空,整个链表不能存在一个结点。即只需要第一个节点不存在即可。所以不带头节点的单链表的判空条件为head==NULL

2、双向链表

 

带头节点的双向链表判空条件:head->next==NULL

不带头节点的双向链表判空条件:head==NULL

3、循环单链表

带头节点的:链表为空头结点仍然存在,同时需要满足循环,所以带头节点的循环单链表的判空条件:head->next==head;

不带头节点的循环单链表的判空条件:head==NULL

4、循环双链表

 

带头节点的判空条件有很多

比如

head->next == head

head->next == head->prior

head->prior == head

head->next == head && head->prior == head

不带头节点:head==NULL

总结:不带头节点的判空条件永远都是head==NULL

          带头节点的判空条件可以自己画图判断条件

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

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

相关文章

unity制作幽灵猎手射击游戏

文章目录 介绍人物向着鼠标点击的位置跑动、旋转lerp函数让摄像机平滑跟随敌人导航敌人攻击发射子弹攻击敌人玩家健康敌人健康分数显示刷怪笼游戏结束动画 介绍 玩家鼠标控制人物转向 玩家鼠标点击控制光线发射的终点 玩家受到伤害屏幕闪红 有三个怪物生成点 玩家射杀敌人获得分…

linux-项目部署软件安装

安装jdk 操作步骤: 1、使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux jdk-8u171-linux-x64.tar.gz 2、解压安装包,命令为tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local 3、配置环境变量,使用vim命令修改/etc/profile文…

【JavaWeb】-- Filter、Listener、Ajax、Vue

文章目录 Filter1.概述2.快速入门2.1 开发步骤2.2 代码演示 3.Filter执行流程4. Filter拦截路径配置5.过滤器链5.1 概述5.2 代码演示5.3 问题 Listener1.概述2. 分类3.代码演示 Ajax1.概述1.1作用1.2 同步和异步 2.快速入门2.1 服务端实现2.2 客户端实现2.3 测试 3.axios3.1 基…

“Shell“Awk命令

文章目录 一.Awk二.Awk按行输出文本三.Awk按字段输出文本四.通过管道,双引号调用shell命令五.总结: 一.Awk Awk的工作原理: 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中&a…

康耐视智能相机IS2000与三菱PLC走MC协议通讯设置详细步骤及案例详解

1.IS2000(SLMP扫描界面)设置如下: 控制器类型:PLC型号 IP地址:PLC地址 主机端口:16进制下的PLC通讯端口 2、IS2000设备寻址界面设置如下: 六大控制块存放区域根据PLC设定,偏移量及设备数可更改。3.打开GX WORKS软件,选择新建工程,点击“确定”,界面如下: 4.点击“连…

初识redis【redis的安装使用与卸载】

一.redis的概念 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。在redis官网中对redis的描述是这样的&#…

MADDPG-学习笔记(1)

文献链接:https://arxiv.org/abs/1706.02275 "Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments"(作者:Lowe, Ryan等人,2017年) 环境搭建:https://zhuanlan.zhihu.co…

【保姆级教程】Windows安装CUDA及cuDNN

Windows安装CUDA及cuDNN 前言1. 第一次安装CUDA2. 第N次安装CUDA 一、 CUDA1. 查询CUDA版本2. 下载CUDA3. 安装CUDA4. 配置CUDA环境变量5. 检查CUDA是否安装成功 二、 cuDNN1. cuDNN版本的查询及下载2. 安装cuDNN3. 配置cuDNN的环境变量4. 检查cuDNN是否安装成功 三、查询CUDA及…

Linux常见指令理解

查看 Linux 主机 ip 在终端下敲 ssh[ip] ip 为刚才看到的 ifconfig 结果. 如果网络畅通, 将会提示输入用户名密码. 输入即可正确登陆 XShell 下的复制粘贴 复制: ctrl insert (有的 insert 需要配合 fn 来按) 粘贴: shift insert ctrl c / ctrl v 是不行的. Linu…

【C语言刷题——Leetcode10道简单题】

✨作者:平凡的人1 ✨专栏:《小菜鸟爱刷题》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 今天是考四六级的日子,不知道大家考得怎么样呀?(反正我是寄了,好多没明…

Vue CLI ref props mixin plugin scoped

3.2. ref 属性 ref被用来给元素或子组件注册引用信息&#xff08;id的替代者&#xff09; 应用在html标签上获取的是真实DOM元素&#xff0c;应用在组件标签上获取的是组件实例对象vc使用方式 打标识&#xff1a;或获取&#xff1a;this.$refs.xxx <template> <di…

Python依据某一文件夹中大量文件的名称复制另一文件夹中的同名文件

本文介绍基于Python语言&#xff0c;针对一个文件夹下大量的Excel表格文件&#xff0c;基于其中每一个文件的名称&#xff0c;从另一个文件夹中找到与这一文件夹中文件同名的文件&#xff0c;并将找到的同名文件复制到第三个文件夹中的方法。 首先&#xff0c;我们来明确一下本…

【网络】深入浅出了解网络世界

HTTP协议 TCP/IP协议族 我们通常使用的网络&#xff0c;是在TCP/IP协议族上运作的。而HTTP协议就是TCP/IP内部的一个子集。 计算机与网络设备之间的通讯需要一定的规则&#xff0c;这种规则就称为协议。 TCP/IP就是互联网上各种协议的总称。 分层管理 TCP/IP 按层次分为…

架构活动中评估需求的五个关注点

从架构活动的整体目标出发&#xff0c;确认需求存在的必要性。很多时候&#xff0c;尤其是大的项目&#xff0c;需求方经常会夹带私货。虽然他们并没有什么恶意&#xff0c;但是这些附加的需求不仅会消耗研发资源&#xff0c;还会增加项目复杂度和规划难度。而最坏的情况&#…

【王道·计算机网络】第四章 网络层【未完】

一、 概述和功能 1.1 网络层功能 主要任务&#xff1a;把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务传输单位&#xff1a;数据报功能&#xff1a; 路由选择与分组转发&#xff0c;即选择最佳路径异构网络互联(依靠路由器)拥塞控制(所有结点都来不…

会议日程——2023第十二届中国PMO大会

2023第十二届中国PMO大会 主题&#xff1a;拥抱变革 展现PMO力量 主办方&#xff1a;PMO评论 签到与入场&#xff1a;人脸识别 时间&#xff1a;6月17-18日 地点&#xff1a;北京蓝调庄园 【邀 请 函】 企业要基业长青就必须持续保持组织活力。企业的内外部环境不会一成不…

Java --- redis实现分布式锁

目录 一、锁的种类 二、分布式锁具备的条件与刚需 三、springbootredisngnix单机实现案例 四、Nginx配置负载均衡 4.1、修改nginx配置文件 4.2、执行启动命令 4.3、启动微服务程序测试 五、使用redis分布式锁 5.1、方法递归重试 5.2、自旋方式 5.3、添加key过期时间&#xff0…

Vue3如何按需引入Element Plus以及定制主题色

1.首先使用指令进行安装 npm install element-plus --save 2.安装按需引入另外两个插件 npm install -D unplugin-vue-components unplugin-auto-import 3.在vite.config.js文件引入以下内容 import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite i…

CloudFlare系列--自定义CDN节点的IP

原文网址&#xff1a;CloudFlare系列--自定义CDN节点的IP_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍CloudFlare如何手动指定CDN为CloudFlare的IP地址。 为什么手动指定CDN IP&#xff1f; 自选节点非常重要&#xff0c;原因如下&#xff1a; 国内访问不同CDN节点的速…

Linux vim光标移动/退出命令/撤退操作/文本查找 等命令大全

1 什么是vim&#xff1f; vim是Linux环境下一款强大、高度可定制的文本编辑工具。能够编辑任何的ASCII格式文件&#xff0c;对内容进行创建、查找、替换、修改、删除、复制、粘贴等操作。编写文件时&#xff0c;无需担心目标文件是否存在&#xff0c;若不存在则会自动在内存中…