算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现

//#include<bits/stdc++.h>

#include<iostream>

using namespace std;

const int N=1e5+10;

//定义

int e[N],pre[N],ne[N],h,id;

int mp[N];

//头插

// 兵 y

// x

void push_front (int x)

{

id++;

e[id]=x;

mp[x]=id;

pre[id]=h;

ne[id]=ne[h];

//先修改新节点

// pre[ne[id]]=id; ne【id】就是ne【h】看上边,刚赋的值

pre[ne[h]]=id;

// pre[id]=h;

ne[h]=id; //最后改这个

}

// 遍历打印,无视pre即可

void print()

{

for(int i=ne[h];i;i=ne[i])

{

cout<<e[i]<<" ";

}cout<<endl;

}

// 按值查找,mp数组优化·

int find(int x)

{

return (mp[x]);

}

// 任意位置(存储位置,下标)之后插入

// p

// 1 3

// x

void insert(int p,int x)

{

id++;

e[id]=x;

mp[x]=id;

pre[id]=p;

ne[id]=ne[p];

// pre[id]=p;

pre[ne[p]]=id;

ne[p]=id;

}

//任意位置(存储位置,下标)之前插入

// p

// 1 2

// x

void insret_front(int p,int x)

{

id++;

e[id]=x;

mp[x]=id;

ne[id]=p;

pre[id]=pre[p];

ne[pre[p]]=id;

pre[p]=id;

}

//删除任意位置元素

// p

// 1 2

// x

void erase(int p)

{

// mp[p]=0; 这个不对

mp[e[p]]=0;

ne[pre[p]]=ne[p];

pre[ne[p]]=pre[p];

}

int main()

{

for(int i=0;i<6;i++)

{

push_front(i);

}

print();

cout<< find(0)<<endl;

cout<< find(2)<<endl;

insert(1,33);

print();

insert(7,88);

print();

cout<< find(33)<<endl;

cout<< find(88)<<endl;

insret_front(1,66);

print();

insret_front(3,33);

print();

insret_front(8,100);

print();

insret_front(9,666);

print();

erase(1);

print();

cout<< find(100)<<endl;

erase(11);

print();

erase(7);

print();

erase(find(666));

print();

return 0;

}

相关推荐
GUIQU.5 分钟前
【QT】嵌入式开发:从零开始,让硬件“活”起来的魔法之旅
java·数据库·c++·qt
机器学习之心3 小时前
多目标鲸鱼优化算法(NSWOA),含46种测试函数和9个评价指标,MATLAB实现
算法·matlab·多目标鲸鱼优化算法·46种测试函数·9个评价指标
西阳未落4 小时前
C++基础(21)——内存管理
开发语言·c++·面试
古译汉书4 小时前
嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门
数据结构·笔记·stm32·单片机·嵌入式硬件·个人开发
我的xiaodoujiao4 小时前
Windows系统Web UI自动化测试学习系列2--环境搭建--Python-PyCharm-Selenium
开发语言·python·测试工具
max5006004 小时前
基于Meta Llama的二语习得学习者行为预测计算模型
人工智能·算法·机器学习·分类·数据挖掘·llama
callJJ4 小时前
从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(2)
java·开发语言·后端·spring·ioc·di
超级大福宝4 小时前
使用 LLVM 16.0.4 编译 MiBench 中的 patricia遇到的 rpc 库问题
c语言·c++
wangjialelele4 小时前
Linux中的线程
java·linux·jvm·c++
橘颂TA5 小时前
【数据结构】解锁数据结构:通往高效编程的密钥
数据结构