题目链接:https://vjudge.net/problem/Aizu-ALDS1_3_C
这一题一开始的时候想的是用vector,超时
#include <iostream>
#include <stack>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
typedef long long ll;
using namespace std;
int main ()
{
ll x,n,i;
scanf("%lld",&n);
char command[20];
vector<ll> s;
for(i=1;i<=n;i++)
{
scanf("%s",command);
if(strcmp(command,"insert")==0)
{
scanf("%lld",&x);
s.insert(s.begin(),x);
}
else if(strcmp(command,"delete")==0)
{
scanf("%lld",&x);
vector<ll>::iterator it = s.begin();
for(;it!=s.end();it++)
{
if(*it==x)
{
s.erase(it);
break;
}
}
}
else if(strcmp(command,"deleteFirst")==0)
{
s.erase(s.begin());
}
else if(strcmp(command,"deleteLast")==0)
{
s.pop_back();
}
}
ll size=s.size();
for(i=0;i<size;i++)
{
if(i!=size-1)
cout<< s[i] << " ";
else
cout << s[i] << endl;
}
return 0;
}
换成list
#include <iostream>
#include <stack>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <list>
#include <algorithm>
typedef long long ll;
using namespace std;
int main ()
{
ll x,n,i;
scanf("%lld",&n);
char command[20];
list<ll> s;
for(i=1;i<=n;i++)
{
scanf("%s",command);
if(strcmp(command,"insert")==0)
{
scanf("%lld",&x);
s.push_front(x);
}
else if(strcmp(command,"delete")==0)
{
scanf("%lld",&x);
list<ll>::iterator it = s.begin();
for(;it!=s.end();it++)
{
if(*it==x)
{
s.erase(it);
break;
}
}
}
else if(strcmp(command,"deleteFirst")==0)
{
s.pop_front();
}
else if(strcmp(command,"deleteLast")==0)
{
s.pop_back();
}
}
i=0;
list<ll>::iterator it=s.begin();
while(it!=s.end())
{
if(i++)
printf(" ");
printf("%lld",*it);
it++;
}
printf("\n");
return 0;
}