其实我也没AC……
因为这题是用链表,我也不会……
但是可以用数组模拟,只不过会超时,但也能拿80分
380,一等奖也稳了
#include <bits/stdc++.h>
using namespace std;
int a[100005],n;
void f1(int x){
int b;
for(int i=n;;i--){
if(a[i]==x){
b = i;
break;
}
}
for(int i=b;i>1;i--) a[i] = a[i-1];
a[1] = x;
}
void f2(int x){
int b;
for(int i=1;;i++){
if(a[i]==x){
b = i;
break;
}
}
for(int i=b;i<=n;i++) a[i] = a[i+1];
a[n] = x;
}
void f3(int x,int y){
int b,c;
for(int i=1;i<=n;i++){
if(a[i]==x) b = i;
if(a[i]==y) c = i;
}
if(b>c){
for(int i=b;i>c;i--){
a[i] = a[i-1];
}
a[c+1] = x;
}else{
for(int i=b;i<c;i++){
a[i] = a[i+1];
}
a[c] = x;
}
}
int main()
{
int m,q,p,k;
cin>>n>>m;
for(int i=1;i<=n;i++) a[i] = i;
while(m--){
scanf("%d",&k);
if(k==1){
scanf("%d",&p);
f1(p);
}else if(k==2){
scanf("%d",&p);
f2(p);
}else{
scanf("%d%d",&p,&q);
f3(p,q);
}
}
for(int i=1;i<=n;i++) printf("%d ",a[i]);
return 0;
}