思路

List会超!List会超!List会超!(可能是我太蒟蒻了写不出来)
最后还是改成了双向链表。

代码

#include<bits/stdc++.h>
using namespace std;

int n,m,opt,x;
deque<int>a;

int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d",&opt);
        if(opt==1){
            scanf("%d",&x);
            a.push_front(x);
        }
        if(opt==2){
            a.pop_front();
        }
        if(opt==3){
            scanf("%d",&x);
            a.push_back(x);
        }
        if(opt==4){
            a.pop_back();
        }
        if(opt==5){
            reverse(a.begin(),a.end());
        }
        if(opt==6){
            printf("%d\n",a.size());
            for(deque<int>::iterator it=a.begin();it!=a.end();){
                printf("%d",*it);
                it++;
                if(it!=a.end()) printf(" ");
                else{
                    putchar('\n');
                    break;
                }
            }
        }
        if(opt==7){
            sort(a.begin(),a.end());
        }
    }
    return 0;
}