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

算法竞赛阶段二-数据结构(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;

http://www.xdnf.cn/news/16443.html

相关文章:

  • bash的特性-bash中的引号
  • 力扣131:分割回文串
  • 智能化设备健康管理:中讯烛龙预测性维护系统引领行业变革
  • 零基础,如何入手学习SAP?
  • ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
  • OpenLayers 综合案例-地图绘制
  • 使用低级上位画图法理解在对磁盘空间进行容量分配时【低级单位上位至高级单位的换算】
  • 【论文阅读】ON THE ROLE OF ATTENTION HEADS IN LARGE LANGUAGE MODEL SAFETY
  • Flutter开发实战之CI/CD与发布流程
  • Unity SMAA
  • 结合Golang语言说明对多线程编程以及 select/epoll等网络模型的使用
  • 携带参数的表单文件上传 axios, SpringBoot
  • 从零开始:Coze Studio开源版部署全记录(win11)
  • 设计模式(六)创建型:单例模式详解
  • C#中Visual Studio平台按照OfficeOpenXml步骤
  • HAProxy 实验指南:从零开始搭建高可用负载均衡系统
  • Reeden:跨平台 AI 电子书阅读器
  • C 与 C++ 的区别:发展、特性及优缺点详解
  • 使用Netty搭建一个网络聊天室
  • VS Code + LaTeX 绘制电气图完全指南(含 PlantUML 样式参考)
  • 2025年全国青少年信息素养大赛Scratch算法创意实践挑战赛 小低组 初赛 真题
  • Javaweb————HTTP消息体拆分讲解
  • 【嵌入式电机控制#20】无刷直流电机硬件案例
  • 【数据结构】栈和队列的实现
  • 单片机ADC机理层面详细分析(一)
  • Anaconda常用命令及环境管理指南
  • Redis的下载和安装(Linux)
  • 无源域自适应综合研究【3】
  • Java模块化编程深度指南:从过程式到面向对象的进化之路
  • vulhub Web Machine(N7)靶场攻略