- 阳子墨 的博客
DAY 10
- @ 2024-7-18 20:22:37
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;
}
错误原因: 无