publicvoidadd(int index, E e){ if (index < 0 || index > size) { thrownew IllegalArgumentException("Add failed,Illegal index is error"); } Node prev = dummyHead; for (int i = 0; i < index; i++) { prev = prev.next; } prev.next = new Node(e,prev.next); size++; }
// 获取链表的index的值 public E get(int index){ if (index < 0 || index > size) { thrownew IllegalArgumentException("Add failed,Illegal index is error"); } 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); }
// 更新链表的最后一个元素 publicvoidset(int index, E e){ if (index < 0 || index > size) { thrownew IllegalArgumentException("Add failed,Illegal index is error"); } Node cur = dummyHead; for (int i = 0; i < index; i++) { cur = cur.next; } cur.e = e; }
// 查找链表是否存在元素e publicbooleancontains(E e){ Node cur = dummyHead.next; while (cur != null) { if (cur.e.equals(e)) { returntrue; } } returnfalse; }
// 删除指定元素 public E remove(int index){ if (index < 0 || index > size) { thrownew IllegalArgumentException("Add failed,Illegal index is error"); } Node prev = dummyHead; for (int i = 0; i < index; i++) { prev = prev.next; } Node delNode = prev.next; prev.next = delNode.next; delNode.next = null; size--; return delNode.e; }
// 删除第一个元素 public E removeFirst(){ return remove(0); }
// 删除最后一个元素 public E removeLast(){ return remove(size - 1); }
@Override public String toString(){ StringBuilder res = new StringBuilder(); // Node cur = dummyHead.next; // while(cur != null) { // res.append(cur + "->"); // cur = cur.next; // } for (Node cur = dummyHead.next; cur != null; cur = cur.next) { res.append(cur + "->"); } res.append("NULL"); return res.toString(); } }