《链表》学习——链表理论基础

news/2025/2/25 7:40:30

链表,一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域,一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针)。

链表的入口节点,链表的头节点,head

链表的类型:

链表节点的定义:

定义链表节点方式:

// 单链表
struct ListNode {
    int val;  // 节点上存储的元素
    ListNode *next;  // 指向下一个节点的指针
    ListNode(int x) : val(x), next(NULL) {}  // 节点的构造函数
};

若自定义构造函数,初始化节点,那么在初始化的时候能直接给变量赋值。若采用默认构造函数初始化节点,那么则不能直接给变量赋值。

自定义构造函数初始化节点:

ListNode* head = new ListNode(5);

链表的操作

删除节点:将一个节点的next指针指向另一个节点。同时,需要手动释放该节点的内存。

添加节点链表的增添和删除都是O(1)操作,不影响其他节点。但,若删除第五个节点,则需要从头节点查找到第四个节点,通过next指针进行删除操作,查找的时间复杂度是O(n)。

这里需要注意:删除操作和查找再删除操作,实际意义不同。

 注意:

数组,在定义的时候,长度就是固定的,如果想改动数组的长度,就需要重新定义一个新的数组。

链表,长度是不固定的,并且可以动态增删,适合数据量不固定,频繁增删,较少查询的场景。


http://www.niftyadmin.cn/n/5865187.html

相关文章

Xlua 编译 Windows、UWP、Android、iOS 平台支持库

Xlua 编译 Windows、UWP、Android、iOS 平台支持库 Windows: 安装 Visual Studio(推荐 2017 或更高版本) 安装 CMake(https://cmake.org/) macOS: 安装 Xcode 和命令行工具 安装 CMake 检查 cmake 是否安…

爬虫基础入门之爬取豆瓣电影Top250-Re正则的使用

网址:豆瓣电影 Top 250 本案例所需要的模块 requests (用于发送HTTP请求)re (用于字符串匹配和操作) 确定需要爬取的数据 : 电影的名称电影的年份电影的评分电影评论人数 一. 发送请求 模拟浏览器向服务器发送请求 准备工作 -分析页面: F12 or 右击点击检查 查看…

Python将GIF动图转换为Base64编码字符串

文章目录 步骤一:准备Python环境步骤二:编写Python脚本步骤三:运行Python脚本步骤四:查看输出步骤五:在HTML中使用Base64字符串注意事项 在Web开发中,有时需要将图像文件(如GIF动图)…

Claude 3.7 Sonnet 泄露,Anthropic 最先进 AI 模型即将在 AWS Bedrock 上首次亮相

(图片:AWS) Anthropic 旗下先进的 AI 模型 Claude 3.7 Sonnet 似乎即将发布。业界预计,亚马逊可能会在2025年2月26日的活动中公布相关消息。泄露的信息表明,该模型将托管于 AWS Bedrock 平台,该平台以提供尖端 AI 模型访问而闻名…

MFC—加法器

1.需要为编辑框添加变量 2.在cpp文件中的按钮中添加代码 void CMFCAddtionDlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码UpdateData(true);//把控件里的值更新给变量m_add m_add1 m_add2;//加法UpdateData(false);//把控件相加的值赋值给控件 }

Python+Flutter前后端分离开发跨平台待办事项APP实战

以下是一个简单的示例,展示如何使用 Flutter 开发一个待办事项应用,并通过 FastAPI 和 SQLAlchemy 作为后端接口。为了简化代码,所有的 Flutter 前端代码将写在一个 main.dart 文件中。 1. 后端部分(FastAPI SQLAlchemy&#xf…

Node.js 入门 原型链污染

前言 node.js是后端的语言 我们知道的apache 服务器 才能支撑一些代码 但是 node.js是一个独立的环境(node.js本身就是一个平台)这个就是为什么很多小程序和app是直接使用它的 nodejs的特点 : 1、单线程 :一次node 只能执行…

DSP芯片C6678的SRIO及其中断跳转的配置

C6678SRIO读写测试门铃中断跳转测试 SRIO简述代码前言SRIO配置原始代码1.使能电源2.初始化SRIO回环修改 3.SRIO测试 Doorbell门铃中断1.初始化中断函数2.中断向量表建立3.中断向量表的链接 本博客基于创龙“678ZH产品线”的SRIO代码,部分参考于网友们的博客&#xf…