数据结构——链表

数据结构——链表

链表(Linked List)是一种常见的数据结构,用于存储和组织数据。它由一系列称为节点(Node)的元素组成,每个节点包含数据和一个指向下一个节点的指针。相比于数组,链表具有动态插入和删除节点的优势,但访问节点需要从头部开始遍历。

链表可以分为单链表(Singly Linked List)和双链表(Doubly Linked List)两种常见形式。单链表中,每个节点包含一个指向下一个节点的指针;双链表中,每个节点同时包含指向下一个节点和前一个节点的指针。

以下是一个用 C++ 实现的单链表的示例:

#include <iostream>// 单链表节点定义
struct ListNode {int data;ListNode* next;ListNode(int val) : data(val), next(nullptr) {}
};// 遍历并打印链表
void printList(ListNode* head) {ListNode* curr = head;while (curr != nullptr) {std::cout << curr->data << " ";curr = curr->next;}std::cout << std::endl;
}// 在链表末尾插入新节点
void insertAtTail(ListNode** head, int val) {ListNode* newNode = new ListNode(val);if (*head == nullptr) {*head = newNode;} else {ListNode* curr = *head;while (curr->next != nullptr) {curr = curr->next;}curr->next = newNode;}
}int main() {ListNode* head = nullptr;  // 链表头节点指针// 在链表末尾插入节点insertAtTail(&head, 1);insertAtTail(&head, 2);insertAtTail(&head, 3);// 打印链表printList(head);return 0;
}

上述示例中,定义了一个简单的单链表结构 ListNode,每个节点包含一个整数数据 data 和指向下一个节点的指针 next。程序提供了两个操作函数:printList 用于遍历并打印链表,insertAtTail 用于在链表末尾插入新节点。

在 main 函数中,首先声明了链表头节点指针 head。然后,通过调用 insertAtTail 函数插入了三个节点,数据分别为 1、2 和 3。最后,调用 printList 函数遍历并打印整个链表。输出结果为 1 2 3。

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

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

相关文章

基于Gerapy部署分布式爬虫管理平台

文章目录 1. 服务器安装scrapyd1.1 scrapyd安装1.2 scrapyd配置允许外网访问1.3 服务器安全组开启端口1.4 服务器防火墙开启端口1.5 scrapyd测试 2. Gerapy 环境搭建2.1 gerapy安装2.2 gerapy测试2.3 项目部署2.4 定时任务2.5 线上代码修改 Gerapy是一个Python的分布式爬虫部署…

机器学习实战学习记录(github)

机器学习实战学习记录&#xff08;github&#xff09; 可见我的github&#xff1a; https://github.com/monkeyhlj/machine_learning_bymyself 刚刚建好&#xff0c;后面的学习记录会一直在这个仓库里面更新。 推荐参考资料&#xff1a;https://www.zhihu.com/column/c_124250…

基于单片机的智能台灯 灯光控制系统人体感应楼梯灯系统的设计与实现

功能介绍 以STM32单片机作为主控系统&#xff1b;主通过光敏采集当前光线强度&#xff1b;通过PMW灯光调节电路&#xff0c;我们可以根据不同的光线亮度&#xff0c;进行3挡调节&#xff1b;通过人体红外检测当前是否有人&#xff1b;通过不同光线情况下使用PWM脉冲电路进行调节…

前端面试理论基础

JS基础 js原型是什么 每个JavaScript对象&#xff08;除了null和undefined&#xff09;都有一个原型&#xff0c;可以通过Object.prototype访问到。原型本身也是一个对象&#xff0c;它可以包含属性和方法。当我们访问一个对象的属性或方法时&#xff0c;如果对象自身没有这个…

Knife4j-的使用(详细教程)

文章目录 前言一、简介二、版本参考三、基本使用1. 导入相关依赖2. 比对效果3. 增强特性应用 四、Spring-Cloud 整合1. 项目准备2. 实现步骤2.1 依赖引入2.2 编写配置类2.2.1基础信息配置2.2.2 配置接口信息2.2.3 安全认证配置 2.3 常用注解的使用2.3.1 Api2.3.2 ApiOperation2…

【全方位解析】如何写好技术文章

前言 为何而写 技术成长&#xff1a;相对于庞大的计算机领域的知识体系&#xff0c;人的记忆还是太有限了&#xff0c;而且随着年龄的增大&#xff0c;记忆同样也会逐渐衰退&#xff0c;正如俗话所说“好记性不如烂笔头”。并且在分享博客的过程中&#xff0c;我们也可以和大…

再见RestTemplate,Spring 6.1新特性:R

百度面经总结 最近在准备面试&#xff0c;看了很多大厂的面经&#xff0c;抽空将百度面试的题目整理了一下&#xff0c;希望对大家有所帮助&#xff01;************面经1shiro的组件分布式一致性算法zooke 山东五征集团有限公司冲压工程师岗很好 公司&#xff1a;山东五征集…

浅谈BFC

什么是BFC BFC&#xff08;块格式化上下文&#xff09;是CSS布局中的一个重要概念&#xff0c;用于控制块级盒子的布局和定位。BFC是一个独立的渲染区域&#xff0c;其中的元素按照一定的规则进行布局&#xff0c;与其他区域相互隔离。 BFC具有以下特性&#xff1a; 内部的块…

OKCC呼叫中心的坐席监控功能有什么

最近很多客户都在跟我谈他们企业的电话客服工作量都非常大&#xff0c;虽然客服人员在服务时应该态度谦和&#xff0c;但是遇到难缠的客户&#xff0c;客服人员总有脾气忍不住的时候&#xff0c;言语上会带有情绪&#xff0c;这些客服人员会因为服务水平欠佳让客户不满意从而产…

【EXCEL】数据录入的快捷键和正确格式

目录 0.环境 1.内容概述 2.具体内容 2.1数据录入换行换列的快捷键&#xff08;标准的数据输入方式&#xff09; 2.2日期的正确格式和使用&#xff08;标准日期格式与长日期&#xff09; 2.2.1 标准日期 2.2.2 长日期 2.2.3 显示当前日期和时间的快捷键 2.3百分比的正确…

ChatGPT助力DevOps的优势与局限

一、前言 DevOps 是一种方法论&#xff0c;旨在提高软件开发和 IT 运营团队的协作和效率。DevOps 涉及各种任务和流程的自动化&#xff0c;例如规划、编码、测试、部署、监控和故障排除。然而&#xff0c;其中一些任务和流程仍然有大量任务需要人工手动处理&#xff0c;而这会…

C#基础--委托

C#基础–委托 C#基础–委托 简单说它就是一个能把方法当参数传递的对象&#xff0c;而且还知道怎么调用这个方法&#xff0c;同时也是粒度更小的“接口”&#xff08;约束了指向方法的签名&#xff09; 一、什么是委托&#xff0c;委托的本质是什么&#xff1f; 跟方法有点类似…

【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 18页论文、数据和代码

【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 18页论文、数据和代码 1 题目 《节能与新能源汽车技术路线图 2.0》提出至 2035 年&#xff0c;新能源汽车市场占比超过 50%&#xff0c;燃料电池汽车保有量达到 100 万辆&#xff0c;节能汽车…

【MySQL】MySQL在Centos7环境下安装

目录 一、卸载不要的环境 1.1、查看是否有安装mysql 1.2、关闭运行的程序 1.3、卸载安装 二、配置yum 源 2.1、下载yum 源 2.2 安装yum源 2.3 查看是否已经生效 三、安装mysql服务 四、启动服务 五、登录方法 方法一&#xff08;不行就下一个&#xff09; 方法二&#xff08;不…

动态sql语句

1.1 动态sql语句概述 Mybatis 的映射文件中&#xff0c;业务逻辑复杂时&#xff0c; SQL是动态变化的&#xff0c;此时在前面的学习中 SQL 就不能满足要求了。 参考的官方文档&#xff1a; 1.2 动态 SQL 之<if> 根据实体类的不同取值&#xff0c;使用不同的 SQL语句…

leetcode_001两数之和

1. 题目 两数之和 2. 题意 找到数组中和为给定值的两个值的坐标。 3. 题解 3.1 暴力 两重循环&#xff0c;直接列举出来。 class Solution1 { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> res;int size nums.size()…

浅谈自动化测试工具 Appium

目录 前言&#xff1a; 一、简单介绍 &#xff08;一&#xff09;测试对象 &#xff08;二&#xff09;支持平台及语言 &#xff08;三&#xff09;工作原理 &#xff08;四&#xff09;安装工具 二、环境搭建 &#xff08;一&#xff09;安装 Android SDK &#xff0…

和chatgpt学架构02-环境搭建

目录 1 安装vs code2 vs code功能介绍3 安装nodejs4 安装vue5 在vs code打开工程总结 我们在上一篇 技术选型 里咨询了chatgpt前后端的框架选择和数据库的选择。有了框架之后就需要选择合适的开发工具了&#xff0c;继续咨询一下chatgpt 我现在选型&#xff0c;前端使用vue&am…

将媒体公司资产迁移到 Amazon S3 的技术方案

随着媒体公司的发展&#xff0c;他们在仓库中积累了大量的旧磁带和未数字化的视频。这些资产可能很有价值&#xff0c;但以目前的形式很难访问和货币化。此外&#xff0c;将这些资产存储在仓库中既有风险又昂贵。 媒体企业可以通过将其资产迁移到云存储来解决这些问题&#xf…

Lua 批量修改文件夹下文件名

local s io.popen("dir C:\\Users\\lizhiyuan\\Desktop\\国家知识产权局ftp法律状态数据\\data /b/s") local filelist s:read("*a")local start_pos 0while 1 do_,end_pos,line string.find(filelist, "([^\n\r].xml)", start_pos)if not e…