思想:
一个数组存放值,另一个数组存放的是索引。这样与正常链表结构中的val ,next 相对应。
定义一个indx ,表示的是插入元素的顺序(第几个插入的元素)。
单链表:
定义头节点为 -1,indx 为 0;
核心操作为 addToHead(), add(int k, int x), remove(int k)
addTohead:
public static void addToHead(int x) {
e[inx] = x;
ne[inx] = head;
head = inx;
inx++;
}
add(int k, int ):
public static void add(int k, int x) {
e[inx] = x;
ne[inx] = ne[k];
ne[k] = inx;
inx++;
}
remove(int k):
public static void remove(int k) {
ne[k] = ne[ne[k]];
}
注意:实现单链表是需要进行初始化,将head置为 -1, indx置为 0;
双链表:
定义e[N] 存放值,l [ N ] 存放左连接。r [ N ] 存放右连接。 indx与单链表一样。
核心操作为:add(int k, int x), remove(int k)
ad