数组模拟单链表和双链表

目录

单链表

初始化

头插

删除

插入 

双链表

初始化

插入右和插入左

删除


单链表

单链表主要有三个接口:头插,删除,插入(由于单链表的性质,插入接口是在结点后面插入)

初始化

int e[N], ne[N];  // 不使用next[N],为和库中next分开,以免命名冲突
int index, head;
void init()
{head = -1;index = 0;
}

e数组代表链表中每个结点的数据域,ne数组代表每个结点的指针域,指向下一个结点的下标。
将头结点的下标初始化为-1。index为待使用的数组下标。

头插

void add_to_head(int x)
{e[index] = x;ne[index] = head;head = index++;
}

删除

void pop(int k)
{ne[k] = ne[ne[k]];
}

插入 

void insert(int k, int x)
{e[index] = x;ne[index] = ne[k];ne[k] = index++;
}

双链表

初始化

int index;
int e[N], l[N], r[N];
void init()
{l[0] = 1, r[1] = 0;r[0] = 1, l[1] = 0;index = 2;
}

0位置是头,1位置是尾,这两条性质永远不变。
待使用的数组下标从2开始,0和1以及使用了。
需要遍历的时候应从2开始。
e数组存储数据域,l数组存储左指针,r数组存储右指针,这两个数组指向的也是左边和右边的下标

插入右和插入左

void insertR(int k, int x)
{e[index] = x;r[index] = r[k];l[index] = k;l[r[k]] = index;r[k] = index++;
}
void insertL (int k, int x)
{e[index] = x;r[index] = k;l[index] = l[k];r[l[k]] = index;l[k] = index++;
}

这两个实现一个即可,比如插入左可以调用插入右函数实现,改变k的位置即可。

删除

void pop(int k)
{r[l[k]] = r[k];l[r[k]] = l[k];
}

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

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

相关文章

【scikit-learn入门指南】:机器学习从零开始

1. 简介 scikit-learn是一款用于数据挖掘和数据分析的简单高效的工具,基于NumPy、SciPy和Matplotlib构建。它能够进行各种机器学习任务,如分类、回归和聚类。 2. 安装scikit-learn 在开始使用scikit-learn之前,需要确保已经安装了scikit-le…

pyinstall打包exe报错

1- 报错 Please install pywin32-ctypes. 前提:python安装路径中已经安装了pywin32-ctypes。 运行pyinstaller报错 PyInstaller cannot check for assembly dependencies. Please install pywin32-ctypes. 解决思路: python安装路径下Lib\site-packa…

算法:位运算题目练习

目录 常见的位运算的操作总结 ①基础位操作 ②给一个数n,确定它的二进制表示中的第x位是0还是1 ③将一个数n的二进制表示的第x位修改成1 ④将一个数n的二进制表示的第x位修改成0 ⑤位图的思想 ⑥提取一个数n二进制表示中最右侧的1 ⑦干掉一个数n二进制表示中…

JVM 根可达算法

Java中的垃圾 Java中"垃圾"通常指的是不再被程序使用和引用的对象,具体表现在没有被栈、JNI指针和永久代对象所引用的对象。Java作为一种面向对象的编程语言,它使用自动内存管理机制,其中垃圾收集器负责检测和回收不再被程序引用的…

响应式德米拉数字内容交易系统素材下载站模板

★模板说明★ 该数字交易系统设计非常完美,两种响应式模式,可打开边栏模式和盒子模式;八种网站颜色,四种风格颜色可供用户自行选择,还可在网站选背景图片;完美的分成系统、充值功能、个人中心等等都以html…

可重复读(Repeatable Read) 隔离级别-幻读

幻读通常发生在范围查询中,下面通过一个简单的例子来说明幻读现象: 假设有一个名为 employees 的表,其中包含员工的ID和部门ID: CREATE TABLE employees (id INT,department_id INT,name VARCHAR(255) );现在有两个并发事务 A 和…

警示:AGI竞赛之未来十年

后新冠时代,人类智商普遍下降,人工智能赶超人类智能指日可待。 最近几天,AI领域悄悄流行一份AGI白皮书,虽然有些危言耸听,甚至包含以中国为竞争对手的阴谋论。下面是主要思想: 在过去的一年里&#xff1a…

速盾:被攻击后开ddos防御还有效吗?

在网络世界中,DDOS(分布式拒绝服务)攻击是一种常见且具有极大破坏力的网络攻击手段。当网站或系统遭受此类攻击后,一个关键的问题便是此时开启 DDOS 防御是否仍然有效。作为一名专业程序员,以下是对这一问题的深入分析…

6.11 作业

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系: 比喻:动物园的讲解员和动物表演 想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员&…

找我设计官网的不多了,看到漂亮大气的,还是忍不住分享出来。

现在有客户找我做官网设计,我说:要么搞个高大上个性化定制的,要么就选个模板得了,几千元的网站不上不下,不如不做。 分享一批高大上的网站给老铁们看看。

功能强大的API函数FindFirstFile使用介绍(附源码)

在处理文件的相关代码中,会频繁使用到Windows系统API函数FindFirstFile,这个函数功能很强大,很多功能都不开它。本文就根据我们在项目中使用该函数的情况,来大概地梳理一下使用FindFirstFile都可以实现哪些常用的功能。 1、FindFirstFile函数声明与WIN32_FIND_DATA结构体 我…

C++ 33 之 const 修饰静态成员

#include <iostream> #include <string.h> using namespace std;// 定义静态const数据成员时&#xff0c;最好在类内部初始化,避免在类外重复初始化&#xff0c;也为了代码的可读性和可维护性class Students03{ public:// 两种写法都可以const static int s_a 10;…

开源模型应用落地-LangChain高阶-LCEL-表达式语言(六)

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么? LCEL是一种非常灵活和强大的语言,可以帮助您更…

openjudge_2.5基本算法之搜索_7221:拯救公主

题目 7221:拯救公主 总时间限制: 1000ms 内存限制: 65536kB 描述 多灾多难的公主又被大魔王抓走啦&#xff01;国王派遣了第一勇士阿福去拯救她。 身为超级厉害的术士&#xff0c;同时也是阿福的好伙伴&#xff0c;你决定祝他一臂之力。你为阿福提供了一张大魔王根据地的地图…

如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题

&#x1f6e0;️ 如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题 摘要 在这篇文章中&#xff0c;我们将详细探讨如何解决在升级到 IntelliJ IDEA 最新版&#xff08;2024.1.3 Ultimate Edition&#xff09;后遇到的 Git 记住密码功能失效的问题。…

FPGA - Verilog题目: 非整数倍数据位宽转换24to128

题目描述&#xff1a; 实现数据位宽转换电路&#xff0c;实现24bit数据输入转换为128bit数据输出。其中&#xff0c;先到的数据应置于输出的高bit位。 电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性&#xff0c;valid_out用来指示数据输出data_out的有效性…

zabbix老版本3.0.14迁移

由于之前zabbix版本过老&#xff0c;一直未能升级&#xff0c;现在一台老的服务器需要迁移&#xff0c;服务器较老&#xff0c;就不更新&#xff0c;先迁移数据&#xff0c; 下载地址&#xff1a; Zabbix Official Repository http://repo.zabbix.com/zabbix/3.0/rhel/7/x86…

数据结构之线性表(4)

前面我们了解到线性表中的顺序表、链表等结构&#xff0c;今天我们探讨新的一种线性表——栈。 那么我们开始栈的探讨之旅吧。 1.栈的基本概念 1.1栈&#xff08;Stack&#xff09;&#xff1a; 是只允许在一端进行插入或删除的线性表。首先栈是一种线性表&#xff0c;但限定…

从零开始!如何安装和配置Jupyter Notebook

目录 一、Jupyter Notebook简介 二、Jupyter Notebook的安装步骤 1. 安装Python 2. 安装Jupyter Notebook 三、Jupyter Notebook的配置 1. 配置Jupyter Notebook的工作目录 2. 设置密码访问 3. 设置SSL安全连接 四、Jupyter Notebook的基本操作 1. 创建和运行Noteboo…

对象和引用类型的赋值都是通过引用传递的方式进行的,这意味着变量实际上存储的是对象的引用,而不是对象本身的副本

这篇博客我主要想解释一下这句话&#xff1a;对象和引用类型的赋值都是通过引用传递的方式进行的&#xff0c;这意味着变量实际上存储的是对象的引用&#xff0c;而不是对象本身的副本。 其实这段话早在学习JS的时候就接触过&#xff0c;只是被我丢进了“记忆垃圾桶”&#xf…