zoukankan      html  css  js  c++  java
  • list模板题

    题面:

    设计一个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
    ",*p); 
    	}
    	return 0;
    } 
    
  • 相关阅读:
    JVM 垃圾收集与内存分配
    JVM 内存管理机制
    JVM 启动调优总结
    Visual Studio 2019 秘钥
    dubbo初学采坑记
    Intellij idea 一个窗口打开多模块并添加依赖
    Intellij idea 自动生成serialVersionUID
    office visio 2019 下载激活
    ASP.NET Core中的配置
    electron快捷键
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/10939919.html
Copyright © 2011-2022 走看看