#B3631. 单向链表

    ID: 4944 传统题 1000ms 128MiB 尝试: 2 已通过: 2 难度: 10 上传者: 标签>数据结构单向链表数组模拟链表模拟难度:普及−来源:洛谷

单向链表

B3631 单向链表

难度: 普及−
标签: 数据结构、单向链表、数组模拟链表、模拟
来源: 洛谷 B3631

题目背景

本题围绕“单向链表”所描述的场景展开。维护一张从左到右排列的表。

下面的题面采用非逐字重述方式整理,但保留原题中的全部判定条件、边界含义、输入输出要求与特殊约定。

题目描述

维护一张从左到右排列的表。初始时表中只有一个元素 11,任意时刻表中所有元素值互不相同。

需要支持以下三种操作,其中 x,yx,y 都是 1110610^6 之间的正整数:

  • 1 x y:把元素 yy 插入到元素 xx 的后面;
  • 2 x:查询元素 xx 后面的元素。若 xx 已经是最后一个元素,则输出 00
  • 3 x:删除元素 xx 后面的那个元素,其他元素的相对顺序不变。若 xx 后面没有元素,则操作不会改变表。

完整规则与任务要求

处理本题时,必须同时满足下列全部要求,不能只实现其中一部分:

  • 维护一张从左到右排列的表。
  • 初始时表中只有一个元素 11,任意时刻表中所有元素值互不相同。
  • 需要支持以下三种操作,其中 x,yx,y 都是 1110610^6 之间的正整数:。
  • 1 x y:。
  • 把元素 yy 插入到元素 xx 的后面;。
  • 查询元素 xx 后面的元素。
  • xx 已经是最后一个元素,则输出 00;。
  • 删除元素 xx 后面的那个元素,其他元素的相对顺序不变。
  • 表中元素值始终互不相同。
  • 插入、查询、删除均以元素值定位,不是以位置编号定位。
  • 当指定元素后面没有元素时,查询输出 0,删除不产生变化。

程序应完整读取“输入格式”中规定的所有数据,并严格按照“输出格式”给出结果。题目中的区间端点、编号起点、排序优先级、同分处理、空结构处理、取模方式和特殊字符串,均以本题面明确写出的规则为准。

所有算法还必须覆盖“数据范围”中的最小规模、最大规模及边界情况,不能只针对样例或小数据。

输入格式

第一行输入整数 qq,表示操作次数。

接下来 qq 行,每行输入一条上述操作。

输出格式

对于每个类型为 2 的查询,输出一行查询结果。

输入输出样例

6
1 1 99
1 99 50
1 99 75
2 99
3 75
2 1
75
99

样例说明

样例输入按照上述规则处理。维护一张从左到右排列的表。最终得到题面所列的样例输出。样例只用于说明规则与格式,程序仍需覆盖全部数据范围。

数据范围

  • 操作数量不超过 10510^5
  • 1x,y1061\le x,y\le 10^6
  • 任意时刻表中所有数字互不相同。

边界与子任务说明

  • 测试数据可能覆盖题面允许的最小值、最大值、重复值、空结果、无解或极端结构等边界情形。
  • 若原题未额外列出分档子任务,则所有测试点统一遵守上述完整数据范围;若题面已经列出比例或分档条件,则这些条件均应视为题面的一部分。
  • 不能根据公开样例推断未写出的额外限制。

本题面依据洛谷 B3631 的公开题目信息重新整理,为内容完整的非逐字重述版。