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

算法竞赛阶段二-数据结构(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.lryc.cn/news/601428.html

相关文章:

  • hackthebox-Pwn-Restaurant(ret2libc)
  • MySQL 8.4 Windows 版安装记录与步骤参考
  • STM32-USART串口实现接收数据三种方法(1.根据\r\n标志符、2.空闲帧中断、3.根据定时器辅助接收)
  • 数据结构第1问:什么是数据结构?
  • 三、构建一个Agent
  • 栈----5.柱状图中最大的矩形
  • RabbitMq 常用命令和REST API
  • 基于分组规则的Excel数据分组优化系统设计与实现
  • 阿里 Qwen3 四模型齐发,字节 Coze 全面开源,GPT-5 8 月初发布!| AI Weekly 7.21-7.27
  • GPT 生成一个打字练习页面
  • maven optional 功能详解
  • 盛最多水的容器-leetcode
  • 时间长了忘记jupyter的环境是哪个了
  • k8s的csi对接GPFS
  • 系统架构设计师-【2025年上半年综合知识题】-真题回忆版分享
  • 动手学深度学习笔记04(上)
  • 物联网发展:从概念到应用的演变历程
  • Sql server开挂的OPENJSON
  • haproxy七层代理(知识点+相关实验部署)
  • C++算法竞赛篇(六)一维数组题型讲解
  • Rust实战:高效开发技巧
  • 【Java实例】服务器IP一站式管理
  • Rust Web 全栈开发(十二):构建 WebAssembly 应用
  • day69—动态规划—爬楼梯(LeetCode-70)
  • LeetCode 923.多重三数之和
  • PMO如何赋能AI产品项目治理和价值交付︱商汤绝影PMO总监陈福龙
  • 0-1BFS(双端队列,洛谷P4667 [BalticOI 2011] Switch the Lamp On 电路维修 (Day1)题解)
  • 【C++】论如何封装红黑树模拟实现set和map
  • Java全栈面试实战:从JVM到AI的技术演进之路
  • JavaScript手录07-数组