思路:

  直接使用STL的list容器。

  分两种情况:

  1.DEL Q。通过迭代器,找到Q的位置(看不懂迭代器的可以参考这篇文http://www.cnblogs.com/yc_sunniwell/archive/2010/06/25/1764934.html),然后直接调用void remove( const TYPE &val )函数即可。

  2.ADD P Q。首先找出P所在的位置,通过迭代器实现,之后将Q插入到P之前,调用iterator insert( iterator pos, const TYPE &val )函数即可实现。

代码如下:

 #include<list>
#include<string>
#include <iostream>
using namespace std;
void operate(int num,int step){
string str;int P,Q;//str为"DEL"或"ADD",P为颜色为P的珠子,Q是颜色为Q的珠子
list<int> *ls=new list<int>;
for(int i=;i<num;i++){ //输入链表值
cin>>Q;
ls->push_back(Q);
}
for(int i=;i<step;i++){
cin>>str;
if(str=="DEL"){//DEL P:表示把颜色为P的珠子去掉,如果它不在端点处,则需要把它旁边的两颗珠子连起来。例如某时刻项链状态为1 4 5 8,则执行DEL 4会变成1 5 8,执行DEL 1会变成4 5 8。
cin>>Q;
ls->remove(Q);
}else{//ADD P Q:表示在颜色为P的珠子前面加上一个颜色为Q的珠子。
cin>>P>>Q;
list<int>::iterator it=ls->begin();
while(*it!=P){
it++;
}
ls->insert(it,Q);
} }
list<int>::iterator it=ls->begin();
cout<<ls->size()<<endl;
while(it!=ls->end()){
cout<<*it<<" ";
it++;
}
delete ls;
} int main(){//测试代码
int num,step;
cin>>num>>step;
operate(num,step);
return ;
}

最新文章

  1. Bash Shell的操作环境
  2. 妹味6:ajax与ajax封装
  3. Netfilter/iptables防火墙
  4. Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?
  5. 《DDNS服务器的搭建和案例解决方法》
  6. Setup Project 安装项目
  7. Canvas实现文字粒子化,并且绕轴旋转(初号机)
  8. Linux经常使用的命令-权利管理命令-权利管理命令chmod
  9. Tips &amp; Tricks:Apache log4j简明教程(二)
  10. servlet与CGI的区别
  11. 【转】mysql-5..6.23-win64.zip安装及配置
  12. C++模板学习:函数模板、结构体模板、类模板
  13. C. Kyoya and Colored Balls(Codeforces Round #309 (Div. 2))
  14. Web运营手记
  15. SpringBoot开源项目(企业信息化基础平台)
  16. Spring.net的一些感悟
  17. 集群概念Cluster
  18. 996.icu 事件后
  19. 更精确的判断对象类型js方法
  20. vue-video-player的使用总结

热门文章

  1. 惊喜:opera换webkit内核后完美支持SDCH压缩协议
  2. [Python]根据地址从maps文件中找相应的库名
  3. Hiberbate中的一对多关联查询
  4. oc之封装与类之间的关系
  5. 将WebApi Host到控制台和IIS
  6. Redmine管理项目1-自定义属性
  7. open live writer下载安装
  8. Santa Claus and Tangerines
  9. windows环境自动获取SVN仓库当前版本
  10. JavaEE XML DOM解析