题面:

设计一个int类型的动态链表L,L中有一个代表当前位置的光标,支持下列操作:

insert(x): 在光标前面插入元素x,插入后光标指向新插入的元素x

move(d): 如果d为正数,则光标向尾部移动d个位置,如果为负数,则向头部移动

erase(): 删除光标当前指向的元素,完成后光标向尾部移动一个位置,如果没有元素可指向,则光标值为END。

L的初始状态为空,且光标指向END

注意事项:

insert返回值是插入元素的位置,而其又会在插入元素后自动后移,无法达到题目要求的“插入后光标指向新插入的元素x”,所以指针要保持原来的位置。

#include<cstdio>
#include<list>
#include<iostream>
using namespace std;
list<int> s;
list<int>::iterator p;
int main()
{
int q,pd,x;
scanf("%d",&q);
p=s.begin();
for(int i=1;i<=q;i++)
{
scanf("%d",&pd);
if(pd==0)
{
scanf("%d",&x);
p=s.insert(p,x);
}
else
if(pd==1)
{
scanf("%d",&x);
if(x>0)
{
while(x--)
{
p++;
}
}
else
{
x=-x;
while(x--)
{
p--;
}
}
}
else
{
p=s.erase(p);
}
}
for(p=s.begin();p!=s.end();p++)
{
printf("%d\n",*p);
}
return 0;
}

最新文章

  1. 第2章 Linux系统安装(3)_SSH连接Linux工具:SecureCRT和WinSCP
  2. Android系统手机端抓包方法
  3. CentOS下判断自己的VPS是OpenVZ的还是Xen的
  4. frame和iframe区别
  5. Template_5模板拾遗1
  6. php防止sql注入函数
  7. 在CentOS6上使用YUM安装php5.5.x
  8. UML问题
  9. 标准SVD和改进的SVD
  10. ●BZOJ 4665 小w的喜糖
  11. 团队项目第二阶段个人进展——Day7
  12. 南邮攻防训练平台逆向第四题WxyVM
  13. Permanent Space 和 Heap Space
  14. 搜狐eHR团队-曾经一起奋斗过的~
  15. &lt;转&gt;详解C++的模板中typename关键字的用法
  16. 封装 vue 组件的过程
  17. Android JNI 数组操作
  18. 【repost】对JAVASCRIPT匿名函数的理解(透彻版)
  19. DataTable 快速导入数据库——百万条数据只需几秒
  20. Little-endian和Big-endian

热门文章

  1. 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)
  2. C# ACCESS 向含有自动编码字段表中添加记录提示“查询值的数目与目标字段中的数目不同”
  3. FMX中实现PostMessage的方法
  4. Qt 中C++ static_cast 和 reinterpret_cast的区别(static_cast是隐式类型转换,会有数据损失,reinterpret_cast是底层二进制转换,没有数据损失)
  5. 获取函数的地址(三种方法,分别是@,Addr,MethodAddress)
  6. android核心系列--1,组件生命周期
  7. php生成html静态文件
  8. ECMAScript6 语法
  9. springboot中加分布式redis锁
  10. 自定义vue全局组件use使用、vuex的使用