二AcW826. 单链表

image
` #include
using namespace std;
const int N=100010;

//head头结点下标
//e[i]值
//ne[i]下一个位置的地址
//idx当前已经用到了哪个点
int head, e[N],ne[N],idx;
void init(){
head=-1;
idx=0;
}
void add_to_head(int x)//插到head
{
e[idx]=x;
ne[idx]=head;//以前head指针是指1,现在idx指针指1
head=idx++;//现在head指
// idx++;
}
void add(int k,int x)//插到下标为k后面
{
e[idx]=x;
ne[idx]=ne[k];//idx现在要指的
ne[k]=idx++;//k现在要指的
// idx++;

}
void remove(int k)//删k的下一个
{
ne[k]=ne[ne[k]];
}

int main()
{
int m;
cin>>m;

init();
while(m--)
{
int x,k;
char op;

cin>>op;
if(op'H')
{
cin>>x;
add_to_head(x);
}
else if(op
'D')
{
cin>>k;
if(k0)head=ne[head];//2空就k指向下一个]不加这一句下个k-1就可能-1了
remove(k-1);//1一号点是第二个插入的点,第k个插入的点下标就是k-1
}
if(op
'I')
// else
{
cin>>k>>x;
add(k-1,x);//k-1
}
}
for(int i=head;i!=-1;i=ne[i])cout<<e[i]<<' ';
cout<<endl;
return 0;
}`

image

posted @ 2023-11-05 17:06  E/Y/E  阅读(39)  评论(0)    收藏  举报