#Y1013. 【第三期】C.LesteM的恶意———链表

【第三期】C.LesteM的恶意———链表

Background

其实我根本不想出指针题,但是分题目时我不在,他们就把这个让我出了

总之,不高兴的LesteM决定出一道也许和指针一点关系没有的题目,不再收敛自己,狠狠的出难题。

LesteM的大手伸到哪里,哪里的难题就泛滥成灾。

Berliner:孩子们这一点也不好玩,大概得有200行代码
ps:没错!于是友好的XwX决定削弱这题,现在只要100行代码吧大概

Description

实现一个链表(连续输入),包括增加、删除、查找和修改等操作。链表中的每个节点都包含一个整数值和一个指向下一个节点的指针。

你可以用以下函数的形式实现各种效果(只供参考)

void insert(int data):在链表的头部插入一个节点,节点的值为 data

void delete(int data):删除链表中第一个值为 data 的节点。如果链表中没有值为 data 的节点,则不进行任何操作

void modify(int old_data, int new_data):将链表中第一个值为 old_data 的节点的值修改为 new_data。如果链表中没有值为 old_data 的节点,则不进行任 何操作

Format

Input

第一行以一串以空格隔开的数字为输入的起点,将其组成链表的形式。

之后有任意行。

其中第一个数字决定操作(1代表插入,2代表删除,3代表修改,0代表输入结束)之后的数字是需要处理的数

例:
1 7 代表在链表的头部插入一个节点,节点的值为 7
2 6 代表删除链表中第一个值为 6 的节点
3 6 7 代表将链表中第一个值为 6 的节点的值修改为 7 以0 结束,输出链表

Output

按顺序输出链表的各个节点的值

Samples

6 5 4 3 2 1
1 7
2 6
3 4 8
0
7 5 8 3 2 1

Limitation

测试点保证链表长度 N100N \leq 100

链表中单个数据小于等于maxint

1s, 1024KiB for each test case.