数据结构之静态链表

定义

用两个数组实现链表,一个数组存储数据,另一个数组记录当前数据的后继的下标。

示例

链表
数据:data[] = {-1, 34, 28, 53, 16, 25, -1, -1, -1, -1}
后继:next[] = { 1, 2, 3, 4, 5, -1, -1, -1, -1, -1}

说明

-1: 表示无效值

  1. data[0],无数据值,表示头节点
  2. next[0]为1,表示data[0]的后继为data[1]
  3. next[1]为2,表示data[1]的后继为data[2]
  4. next[2]为3,表示data[2]的后继为data[3]
  5. next[3]为4,表示data[3]的后继为data[4]
  6. next[4]为5,表示data[4]的后继为data[5]
操作
  1. 插入
    如:在28,前面插入17,则数组变化为
    数据:data[] = {-1, 34, 28, 53, 16, 25, 17, -1, -1, -1}
    后继:next[] = { 1, 6, 3, 4, 5, 2, -1, -1, -1, -1}
    说明:data数组,从下标1(下标0表示头结点)开始找到第一个无效值,当前为下标为6,将其设置为插入的数值,即data[6] = 17;调整34的后继为6,即next[1] = 6;调整17的后继为28,即next[6] = 2;
  2. 删除
    如:删除53,则数据变化为
    数据:data[] = {-1, 34, 28, -1, 16, 25, 17, -1, -1, -1}
    后继:next[] = { 1, 6, 4, -1, 5, 2, -1, -1, -1, -1}
    说明:找到后继节点为53的节点(28),下标为2;保存28的后继下标,即next[2](值为3);设置28的后继为其后继的后继,即next[2] = next[next[2]];设置下标3的数据及后继数组为-1,即data[3] = -1,next[3] = -1
扩展
  1. 循环链表
    后继数组中,设置最后一个节点的后继为头结点,如:
    数据:data[] = {-1, 34, 28, 53, 16, 25, -1, -1, -1, -1}
    后继:next[] = { 1, 2, 3, 4, 5, 0, -1, -1, -1, -1}
  2. 双向链表
    增加一个前驱数组,标识数据的前驱的下标,如
    数据:data[] = {-1, 34, 28, 53, 16, 25, -1, -1, -1, -1}
    后继:next[] = { 1, 2, 3, 4, 5, 0, -1, -1, -1, -1}
    前驱:prex[] = { 5, 0, 1, 2, 3, 4, -1, -1, -1, -1}

参考《算法训练营》

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

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

相关文章

CentOS7下载并安装mysql-8.0.33

CentOS7下载并安装mysql-8.0.33 一、官网下载mysql-8.0.33 MySQL下载路径 MySQL :: Download MySQL Community Server 自己百度mysql官网下载的话直接按照完整路径指示下载即可,如果点击上面的连接下载mysql的话,直接按照4、5、6步骤选择适合自己linu…

Canny边缘检测

Canny边缘检测 步骤: 使用高斯滤波器,以平滑图像,滤波噪声计算图像中每个像素点的梯度强度和方向应用非极大值抑制(Non-Maximum Suppression),以消除边缘检测带来的杂散响应应用双阈值(Double…

视频融合平台EasyCVR电子地图增加鼠标悬停展示经纬度

EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可…

MFC第九天 CRect类的封装和窗口坐标系转换及获取窗口ID 以及对CTime类与COleDateTime类简介

文章目录 CRect类的封装、窗口坐标系转换及获取窗口ID 、CTime类与COleDateTime类简介CRect类的封装窗口坐标系转换及获取窗口IDCTime类与COleDateTime类简介关于设置日期控件上的时间问题 CRect类的封装、窗口坐标系转换及获取窗口ID 、CTime类与COleDateTime类简介 CRect类的…

<Oracle>《Linux 下安装Oracle数据库 - Oracle 19C By CentOS 8 》(第一部分)

《Linux 下安装Oracle数据库 - Oracle 19C By CentOS 8 》(第一部分) 1 说明1.1 前言1.2 资源下载 2 安装步骤2.1 上传安装包2.2 下载数据库预安装包2.3 安装数据库预安装包 1 说明 1.1 前言 本文是Linux系统命令行模式安装Oracle数据库的学习实验记录…

ansible自动化IT工具安装部署与使用验证

目录 一、环境配置 1、关闭防火墙 2、免密登录配置 3、同步时区 二、服务端配置 1、安装软件 2、查看版本 3、实现远程控制huyang3 4、测试 结果验证: 一、环境配置 1、关闭防火墙 systemctl stop firewalld iptables -F setenforce0 2、免密登录配置 【huy…

AI日报:DragGAN通过拖拽像素点实现图像调整 等

🦉 AI新闻 🚀 DragGAN:一种直观的图像编辑工具,通过拖拽像素点实现图像调整 摘要:研究者们来自马克斯・普朗克计算机科学研究所、MIT CSAIL和谷歌,他们开发了一种名为DragGAN的图像编辑工具。通过拖拽像素…

SAM与Prompt的结合

1. SAM介绍 由Meta AI Research开发的Segment anything model(简称SAM)最近引起了广泛的关注。SAM在超过10亿个mask的大型分割数据集上进行了训练,能够在特定的图像上分割任何对象。在最初的SAM工作中,作者们使用了零样本迁移任务…

Nacos(一):简介 如何安装 服务注册与发现 集群 权重 与Eureka区别

一、简介 1、应用场景 当服务调用越来越多,服务的地址需要管理起来,并实现动态调用而不是硬编码在接口中。此时需要一个注册中心来帮助我们管理服务。 流程如下: 商品微服务注册IP和端口到注册中心订单微服务先从注册中心获取到商品微服务…

从0开始,精通Go语言Rest微服务架构和开发

说在前面 现在拿到offer超级难,甚至连面试电话,一个都搞不到。 尼恩的技术社区中(50),很多小伙伴凭借 “左手云原生右手大数据”的绝活,拿到了offer,并且是非常优质的offer,据说年…

1σ Random Jitter of SSB for TIE Period

1σ Random Jitter of SSB for TIE & Period ,该章节厘清了jitter基本概念,并给出了对应的表达式。

在线PDF格式转换器推荐,小圆象PDF转换器满足您的办公需求

作为上班族,我们都知道在办公应用中经常使用PDF文件。PDF具有较高的内容安全性,并且可以在多种设备上打开和浏览而不会出现格式混乱的问题。然而,PDF文件的一个短板是其不易编辑。通常情况下,我们需要将PDF文件转换为Word文档&…