第二讲 数据结构

embedded/2024/9/24 12:09:25/

链表

单链表

单链表的用途在于编写领接表,领接表的用途在于存储图和树

826. 单链表 - Acwing题库
在这里插入图片描述
数据结构

  • e[N]:用于存储节点的值的数组。
  • ne[N]:作为“下一个”指针的数组,用于连接节点。e[]和ne[]是通过下标关联起来
  • head:指向链表头部的索引。
  • idx:当前可用的下一个索引

初始化:

  • init() 函数将 head 设置为 -1(表示链表为空),idx 设置为 0。

添加元素(头插法):
在这里插入图片描述

  • add_to_head(int x):在链表头部插入一个值为 x 的新节点。
  • add(int k, int x):在索引为 k 的节点后面插入一个值为 x 的新节点。

删除元素:
在这里插入图片描述
remove(int k):删除索引为 k 的节点后面的节点。
主功能:

程序读取操作的数量 m,然后处理每个操作:

  • H x:将 x 添加到链表头部。
  • D k:删除第 k 个节点后面的节点(如果 k 为 0,则删除头节点)。
  • I k x:在第 k 个节点后面插入值为 x 的节点。
  • 最后,打印链表中剩余的元素。
#include <iostream>using namespace std;const int N = 100010;// head 表示头结点的下标
// e[i] 表示节点i的值
// ne[i] 表示节点i的next指针是多少
// idx 存储当前已经用到了哪个点
int head, e[N], ne[N], idx;// 初始化
void init()
{head = -1;idx = 0;
}// 将x插到头结点
void add_to_head(int x)
{e[idx] = x, ne[idx] = head, head = idx ++ ;
}// 将x插到下标是k的点后面
void add(int k, int x)
{e[idx] = x, ne[idx] = ne[k], ne[k] = idx ++ ;
}// 将下标是k的点后面的点删掉
void remove(int k)
{ne[k] = ne[ne[k]];
}int main()
{int m;cin >> m;init();while (m -- ){int k, x;char op;cin >> op;if (op == 'H'){cin >> x;add_to_head(x);}else if (op == 'D'){cin >> k;if (!k) head = ne[head];else remove(k - 1);}else{cin >> k >> x;add(k - 1, x);}}for (int i = head; i != -1; i = ne[i]) cout << e[i] << ' ';cout << endl;return 0;
}

双链表

用来优化某些问题


http://www.ppmy.cn/embedded/116090.html

相关文章

Docker Compose 启动 PostgreSQL 数据库

Docker Compose 启动 PostgreSQL 数据库 文章目录 Docker Compose 启动 PostgreSQL 数据库一 配置 docker-compose.pgsql.yml二 yml 配置说明三 启动容器四 停止容器 本文介绍了如何通过 Docker Compose 快速启动 PostgreSQL 数据库。在 docker-compose.pgsql.yml 文件中&…

102.SAPUI5 sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问失败

目录 原因 解决办法 1.修改谷歌浏览器的setting 2.在tomcat中配置https访问 参考 使用SAPUI5的sap.ndc.BarcodeScannerButton调用摄像头时&#xff0c;localhost访问正常&#xff0c;使用IP访问时&#xff0c;一直打不开摄像头&#xff0c;提示getUserMedia()问题。 原因…

快手旗下——Kolors模型部署与使用指南

以下是按照要求重写后的 Kolors 模型部署与使用指南&#xff0c;文章风格偏技术性&#xff0c;但保持简洁和易懂的特点&#xff1a; Kolors 模型部署与使用指南 一、Kolors 简介 Kolors 是由快手 Kolors 团队开发的文本到图像生成模型&#xff0c;基于大规模的潜在扩散技术。…

前端项目代码开发规范及工具配置

在项目开发中&#xff0c;良好的代码编写规范是项目组成的重要元素。本文将详细介绍在项目开发中如何集成相应的代码规范插件及使用方法。 项目规范及工具 集成 EditorConfig集成 Prettier1. 安装 Prettier2. 创建 Prettier 配置文件3. 配置 .prettierrc4. 使用 Prettier 集成 …

828 华为云征文|华为 Flexus 云服务器搭建 SamWaf 开源轻量级网站防火墙

在当今数字化高速发展的时代&#xff0c;网络安全问题日益凸显。为了保障网站的稳定运行和数据安全&#xff0c;我们可以借助华为 Flexus 云服务器搭建 SamWaf 开源轻量级网站防火墙。这不仅是一次技术的挑战&#xff0c;更是为网站筑牢安全防线的重要举措。 一、华为 Flexus …

拓宽销售渠道的电子名片小程序源码系统 带源代码以及搭建部署教程

系统概述 电子名片小程序源码系统是一款集名片信息管理、社交分享、数据分析于一体的综合解决方案。它打破了传统纸质名片的局限性&#xff0c;将名片信息以数字化的形式呈现&#xff0c;并通过微信小程序这一平台&#xff0c;实现了名片的即时分享、互动与追踪。该系统适用于…

【Linux 从基础到进阶】 Xen 虚拟化技术应用

Xen 虚拟化技术应用 Xen 是一款开源的虚拟化技术,广泛应用于云计算和服务器虚拟化中。作为一款高性能的虚拟化平台,Xen 提供了完整的虚拟化(Full Virtualization)和准虚拟化(Paravirtualization)支持,能够在 x86 和 ARM 等架构上运行多个虚拟机。本文将介绍 Xen 的基本…

设计模式之命令模式:从原理到实战,深入解析及源码应用

命令模式 什么是命令模式&#xff1f; 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将一个请求封装为一个对象&#xff0c;从而允许使用不同的请求、队列或者日志来参数化对象&#xff0c;并支持可撤销的操作。命令模式的核心思想是将命令…