827. 双链表

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了827. 双链表相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
https://www.acwing.com/problem/content/description/829/
k+1 是因为我们的 idx是从2开始的,不是从1开始的

#include<cstdio>
#include<iostream>
using namespace std;
const int N=1e5+10;
int e[N],l[N],r[N],idx;
int m;
void init()
{
	r[0]=1,l[1]=0,idx=2;
}
void add(int k,int x)//k的右边差一个数x 
{
	e[idx]=x,l[idx]=k,r[idx]=r[k],l[r[k]]=idx,r[k]=idx++;
}
void remove(int k)
{
	l[r[k]]=l[k];
	r[l[k]]=r[k];
}
int main(void)
{
	cin>>m;
	init();
	while(m--)
	{
		string op; cin>>op;
		if(op=="L")  
		{
			int x; cin>>x;
			add(0,x);
		}
		if(op=="R")
		{
			int x; cin>>x;
			add(l[1],x);
		}
		if(op=="D")
		{
			int x; cin>>x;
			remove(x+1);
		}
		if(op=="IL")
		{
			int k,x; cin>>k>>x;
			add(l[k+1],x);
		}
		if(op=="IR")
		{
			int k,x; cin>>k>>x;
			add(k+1,x);
		}
	}
	for(int i=r[0];i!=1;i=r[i]) cout<<e[i]<<" ";
	return 0;
}

以上是关于827. 双链表的主要内容,如果未能解决你的问题,请参考以下文章

827. 双链表

链表和双链表(AcWing 826.827)

AcWing 827. 双链表

日常学习随笔-自定义了一个双链表(注释蛮详细的)

AcWing基础算法课Level-2 第二讲 数据结构

基础数据结构---双链表go语言的代码实现