day10 总结

T1😁排队

思路

用一个双端队列,使用push.front(),pop.front()...等函数实现入队和出队,最后在输出(本人用双链表实现)

双链表代码

#include<bits/stdc++.h>
using namespace std;
int head,e[100010],ne[100010],le[100010],idx=1,tail=-1;
void csh()
{
    ne[head]=tail;
    le[tail]=head;
    idx=1;
}
void add_to_head()
{
    e[idx]=idx;
    ne[idx]=ne[head];
    le[idx]=head;
    le[ne[head]]=idx;
    ne[head]=idx;
    idx++;
}
void add_to_tail()
{
    e[idx]=idx;
    ne[idx]=tail;
    le[idx]=le[tail];
    ne[le[tail]]=idx;
    le[tail]=idx;
    idx++;
}
void erase_head(int cnt)
{
   for(int i=1;i<=cnt;i++)
   {
       ne[head]=ne[ne[head]];
   }
}
void erase_tail(int cnt)
{
    for(int i=1;i<=cnt;i++)
    {
    le[tail]=le[le[tail]];
    }
}
int main()
{
   csh();
   string oz,fx;
   int s,cnt;
   cin>>s;
   for(int i=1;i<=s;i++)
   {
       cin>>oz>>fx;
       if(oz=="A")
       {
           if(fx=="L") add_to_head();
           else add_to_tail();
       }
       else
       {
           cin>>cnt;
           if(fx=="L") erase_head(cnt);
           else erase_tail(cnt);
        }
    }
    for(int i=ne[head];i!=-1;i=ne[i]) cout<<e[i]<<endl;
}

错误原因: 无

T2🙄插入删除