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

第二讲 数据结构

链表

单链表

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

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.mrgr.cn/news/35037.html

相关文章:

  • SQL中的时间类型:深入解析与应用
  • ⾃动化运维利器 Ansible-变量
  • blenderFds代码解读
  • 第四节-OSI-网络层
  • PostgreSQL序列:创建、管理与高效应用指南
  • Java面向对象编程进阶之包装类
  • 百度C++一面-面经总结
  • 制药污水处理设备流程说明介绍
  • 2024年最强网络安全学习路线,详细到直接上清华的教材!
  • 【Linux 报错】“userdel: user xxxx is currently used by process xxx”
  • 基类和派生类的赋值对象转换、派生类与基类成员的函数隐藏、派生类中的默认成员函数、继承与友元、继承与静态成员函数、菱形继承、菱形虚拟继承等的介绍
  • Java:Object操作
  • Linux Shell: 使用 Expect 自动化 SCP 和 SSH 连接的 Shell 脚本详解
  • 软件安全测评的必要性,安全测评有必要找第三方软件检测机构吗?
  • ECharts的特点
  • JMeter与大模型融合应用之JMeter菜单栏中切入大模型交互详解
  • 什么软件可以同声传译?5款高效沟通的翻译软件速速收藏
  • 低场核磁共振成像系统MRI的成像优势特点
  • 车辆合格证识别接口-汽车管理智能化-python示例
  • 外包功能测试干了4年,技术退步太明显了。。。。。
  • 【Docker】在 CentOS 上安装 Docker 的完整指南
  • python类的call方法与init方法
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(二)-索引
  • 嵌入式必备技能
  • AI推介-大语言模型LLMs之RAG(检索增强生成)论文速览(arXiv方向):2024.07.20-2024.08.15
  • 神经网络(二):卷积神经网络