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

B4324 双向链表

点击查看代码
#include<bits/stdc++.h>using namespace std;const int N=500005;
int l[N],r[N];
int n,m;
bool del[N];void insert(int x,int y)
{r[x]=r[y],l[x]=y;l[r[y]]=x,r[y]=x;
}void remove(int x)
{r[l[x]]=r[x],l[r[x]]=l[x];    
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;r[0]=1;for(int i=1;i<=n;i++){r[i]=i+1;l[i]=i-1;}r[n]=0;int op,x,y;while(m--){cin>>op;if(op==1){cin>>x>>y;if(x==y||del[x]||del[y]) continue;remove(x);insert(x,l[y]);}else if(op==2){cin>>x>>y;if(x==y||del[x]||del[y]) continue;remove(x);insert(x,y);}else if(op==3){cin>>x;if(del[x]) continue;remove(x);del[x]=true;}}int p=r[0];if(p==0) cout<<"Empty!";for(p=r[0];p!=0;p=r[p]) cout<<p<<' ';return 0;
}
双向链表的实现,核心就依赖于删除和插入的函数,操作指针时有个小技巧就是要先处理【】带指针的情况,因为覆盖 还有本题也是直接用下标代表数值,可以初始化为r【0】=1//头指针,r[n]=0,相当于末尾无元素
http://www.jsqmd.com/news/49830/

相关文章:

  • 系列最便宜!苹果iPhone 17e要来了:60Hz低刷灵动岛屏幕
  • Codeforces Round 1065 (Div. 3)
  • 代码随想录算法训练营第四天:链表part02
  • CF2027A-Rectangle Arrangement
  • 线段树全家桶
  • 用 Node.js 实现英文数字验证码识别
  • 用 Rust 和 Tesseract OCR 实现英文数字验证码识别
  • 在Java中调用第三方接口并返回第三方页面
  • 251124省运会结束啦
  • 用 C# 和 Tesseract 实现英文数字验证码识别
  • 有了TCP为什么还需要HTTP?再用RPC?这次彻底讲明白了
  • 11.24午夜盘思
  • Java调用第三方接口的方法
  • 2025留学代写危机应对指南:5家靠谱机构助你重返校园
  • 2025美国大学停学应对全攻略:5大靠谱机构助你重返学术轨道
  • 2025美国紧急转学机构推荐深度解析:靠谱机构认准这些核心优势,危机中重启留学之路​
  • 第35天(中等题 数据结构)
  • 2025美国留学求职机构实力解析:你的职场Offer引路人在哪?
  • Universal Fit 3-Button Metal Flip Remote Key (5pcs/lot) – KEYDIY KD NB29-3 for Euro/American Cars
  • 2025美国科研中介TOP5解析:从课题对接至成果落地全程护航
  • 根据缺少的文件查找deb包
  • 第一个Vue2程序
  • 2025美国留学生求职中介TOP5:厚仁教育领衔,精准匹配名企资源
  • CF1097F Alex and a TV Show
  • Git 最速上手
  • Ubuntu 24.04 安装 libncurses.so.5
  • Universal 3-Button Flip Remote Key for VW - 5pcs/Lot (VW Compatible, Mechanic Owner Friendly)
  • 48
  • 生成对抗网络训练优化技术解析
  • 基于相控微波光子滤波器的旋转诱导相位差解调