题目描述
实现一个链表的初始化、插入、删除、访问、清空等操作,调用这些操作,实现如下功能:
- `I a b` -- 在链表的第 $a$ 个位置**前**插入新结点,结点值为 $b$
- `D a` -- 删除链表中第 $a$ 个位置的结点,并输出该结点值
- `G a` -- 输出链表中第 $a$ 个位置的结点值
- `L b` -- 输出链表中值为 $b$ 的第一个结点的位置
- `C` -- 清空链表
链表采用带头结点的单链表的存储形式,结点定义如下:
```c
typedef struct Lnode {
ElemType data;
struct Lnode *next;
} Lnode, *linklist;
```
输入格式
第一行包含两个整数 $n,m$,分别表示初始链表的长度和操作的个数。
第二行包含 $n$ 个整数 $A_1,A_2,\cdots,A_n$,表示初始链表内各元素值。
其后 $m$ 行,每行表示一次操作,均为题面描述内五种操作中的一种。数据保证给定的操作一定合法。
- $1\le n\le 10$
- $1\le m\le 50$
- $1\le A_i\le 20$
- $1\le a\le \text{当前链表长度}+1$
- $1\le b\le 20$