我是靠谱客的博主 勤恳黑米,最近开发中收集的这篇文章主要介绍【ACM】Doubly Linked List(STL list),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目链接: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;
}

 

最后

以上就是勤恳黑米为你收集整理的【ACM】Doubly Linked List(STL list)的全部内容,希望文章能够帮你解决【ACM】Doubly Linked List(STL list)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(182)

评论列表共有 0 条评论

立即
投稿
返回
顶部