遍历初始时,让游标cur指向索引为0的节点;当i = 0时,cur指向索引为1的节点;当i == index - 1时(循环停止的位置),cur指向索引为index的节点,即要删除节点的位置(在做这一步分析的时候,很像枚举数列的前几个数,然后找规律的感觉);
// 获得链表的第index(0-based)个位置的元素
// 在链表中不是一个常用的操作,练习用:)
public E get(int index){
if(index < 0 || index >= size)
throw new IllegalArgumentException("Get failed. Illegal index.");
Node cur = dummyHead.next;
for(int i = 0 ; i < index ; i ++)
cur = cur.next;
return cur.e;
}
// 获得链表的第一个元素
public E getFirst(){
return get(0);
}
// 获得链表的最后一个元素
public E getLast(){
return get(size - 1);
}
遍历初始时,让游标cur指向索引为0的节点;当i = 0时,cur指向索引为1的节点;当i == index - 1时(循环停止的位置),cur指向索引为index的节点,即待更新节点的位置(在做这一步分析的时候,很像枚举数列的前几个数,然后找规律的感觉);
// 修改链表的第index(0-based)个位置的元素为e
// 在链表中不是一个常用的操作,练习用:)
public void set(int index, E e){
if(index < 0 || index >= size)
throw new IllegalArgumentException("Set failed. Illegal index.");
Node cur = dummyHead.next;
for(int i = 0 ; i < index ; i ++)
cur = cur.next;
cur.e = e;
}