list模板题
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目描述
现有一个动态数组容器,支持以下操作:插入元素、删除元素、遍历元素和查询元素。你需要使用迭代器来实现这些操作,确保元素的顺序性和迭代器的正确性。具体规则如下:
- 插入操作:在指定位置插入元素,若位置不合法则插入到末尾。
- 删除操作:删除指定位置的元素,若位置不合法则不删除。
- 遍历操作:使用迭代器遍历当前所有元素并输出。
- 查询操作:使用迭代器查找第一个等于给定值的元素,并返回其位置(从0开始),若未找到则返回-1。
操作完成后,需输出最终容器中的元素个数。
输入格式
- 第一行输入一个整数
q
(1 ≤ 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
样例说明
- 插入操作:依次在位置0、1、2插入10、20、30,容器变为
[10, 20, 30]
。 - 遍历操作:输出所有元素
10 20 30
。 - 查询操作:查找元素20,其位置为1,输出1。
- 删除操作:删除位置1的元素,容器变为
[10, 30]
。 - 最终元素个数:输出2。
测试点约束
- 操作次数
q ≤ 1000000
。 - 插入元素的位置
pos
满足0 ≤ pos ≤ 当前元素个数
。 - 元素值
x
的取值范围为int
(-2^31 ~ 2^31-1)。
提示
- 迭代器设计:需要实现一个迭代器类,支持移动到下一个元素、判断是否有下一个元素、获取当前元素等操作。
- 插入/删除操作:插入或删除元素后,需要确保迭代器的正确性(例如,迭代器指向的元素是否仍然有效)。
- 动态数组:可使用列表(List)模拟动态数组,但插入和删除操作需注意维护元素顺序。
7.25造数据
- Status
- Done
- Rule
- IOI
- Problem
- 13
- Start at
- 2025-7-25 18:00
- End at
- 2025-7-25 21:00
- Duration
- 3 hour(s)
- Host
- Partic.
- 9