#1514. list模板题

list模板题

题目描述

现有一个动态数组容器,支持以下操作:插入元素、删除元素、遍历元素和查询元素。你需要使用迭代器来实现这些操作,确保元素的顺序性和迭代器的正确性。具体规则如下:

  1. 插入操作:在指定位置插入元素,若位置不合法则插入到末尾。
  2. 删除操作:删除指定位置的元素,若位置不合法则不删除。
  3. 遍历操作:使用迭代器遍历当前所有元素并输出。
  4. 查询操作:使用迭代器查找第一个等于给定值的元素,并返回其位置(从0开始),若未找到则返回-1。

操作完成后,需输出最终容器中的元素个数。

输入格式

  • 第一行输入一个整数q1 ≤ q ≤ 1000000),表示操作的总次数。
  • 接下来q行,每行表示一次操作,格式如下:
    • 插入操作1 pos x(在位置pos插入元素x,若pos不合法则插入到末尾)。
    • 删除操作2 pos(删除位置pos的元素,若pos不合法则不删除)。
    • 遍历操作3(使用迭代器遍历并输出所有元素)。
    • 查询操作4 x(使用迭代器查找第一个等于x的元素位置)。

输出格式

  • 对于遍历操作(操作3),输出一行元素,元素之间用空格分隔,若容器为空则输出空行。
  • 对于查询操作(操作4),输出一行整数,表示元素位置或-1。
  • 所有操作完成后,输出一行整数,表示容器中剩余元素的个数。

样例 1 输入

6
1 0 10
1 1 20
1 2 30
3
4 20
2 1

样例 1 输出

10 20 30
1
2

样例说明

  1. 插入操作:依次在位置0、1、2插入10、20、30,容器变为[10, 20, 30]
  2. 遍历操作:输出所有元素10 20 30
  3. 查询操作:查找元素20,其位置为1,输出1。
  4. 删除操作:删除位置1的元素,容器变为[10, 30]
  5. 最终元素个数:输出2。

测试点约束

  • 操作次数 q ≤ 1000000
  • 插入元素的位置pos满足0 ≤ pos ≤ 当前元素个数
  • 元素值x的取值范围为int(-2^31 ~ 2^31-1)。

提示

  • 迭代器设计:需要实现一个迭代器类,支持移动到下一个元素、判断是否有下一个元素、获取当前元素等操作。
  • 插入/删除操作:插入或删除元素后,需要确保迭代器的正确性(例如,迭代器指向的元素是否仍然有效)。
  • 动态数组:可使用列表(List)模拟动态数组,但插入和删除操作需注意维护元素顺序。