public void add(int index, Node nde) { if (nde == null) return; if (index == 0) { // This makes it the first element in the list. nde.insertBefore(head); head = nde; } else if (index == size) { // Because the list is circular this // makes it the last element in the list. nde.insertBefore(head); } else { Node after = head; while (index != 0) { after = after.getNext(); index--; } nde.insertBefore(after); } size++; }
/** * Link this node in, infront of nde (unlinks it's self * before hand if needed). * @param nde the node to link in before. */ protected final void insertBefore(Node nde) { // Already here... if (this == nde) return; if (getPrev() != null) unlink(); // Actually insert this node... if (nde == null) { // empty lst... setNext(this); setPrev(this); } else { setNext(nde); setPrev(nde.getPrev()); nde.setPrev(this); if (getPrev() != null) getPrev().setNext(this); } } }
/** * Link this node in, infront of nde (unlinks it's self * before hand if needed). * @param nde the node to link in before. */ protected final void insertBefore(Node nde) { // Already here... if (this == nde) return; if (getPrev() != null) unlink(); // Actually insert this node... if (nde == null) { // empty lst... setNext(this); setPrev(this); } else { setNext(nde); setPrev(nde.getPrev()); nde.setPrev(this); if (getPrev() != null) getPrev().setNext(this); } } }
/** * Link this node in, infront of nde (unlinks it's self * before hand if needed). * @param nde the node to link in before. */ protected final void insertBefore(Node nde) { // Already here... if (this == nde) return; if (getPrev() != null) unlink(); // Actually insert this node... if (nde == null) { // empty lst... setNext(this); setPrev(this); } else { setNext(nde); setPrev(nde.getPrev()); nde.setPrev(this); if (getPrev() != null) getPrev().setNext(this); } } }
public void add(int index, Node nde) { if (nde == null) return; if (index == 0) { // This makes it the first element in the list. nde.insertBefore(head); head = nde; } else if (index == size) { // Because the list is circular this // makes it the last element in the list. nde.insertBefore(head); } else { Node after = head; while (index != 0) { after = after.getNext(); index--; } nde.insertBefore(after); } size++; }
public void add(int index, Node nde) { if (nde == null) return; if (index == 0) { // This makes it the first element in the list. nde.insertBefore(head); head = nde; } else if (index == size) { // Because the list is circular this // makes it the last element in the list. nde.insertBefore(head); } else { Node after = head; while (index != 0) { after = after.getNext(); index--; } nde.insertBefore(after); } size++; }
/** * Removes nde from the list it is part of (should be this * one, otherwise results are undefined). If nde is the * current head element, then the next element becomes head, * if there are no more elements the list becomes empty. * @param nde node to remove. */ public void remove(Node nde) { if (nde == null) return; if (nde == head) { if (head.getNext() == head) head = null; // Last node... else head = head.getNext(); } nde.unlink(); size--; }
/** * Removes nde from the list it is part of (should be this * one, otherwise results are undefined). If nde is the * current head element, then the next element becomes head, * if there are no more elements the list becomes empty. * @param nde node to remove. */ public void remove(Node nde) { if (nde == null) return; if (nde == head) { if (head.getNext() == head) head = null; // Last node... else head = head.getNext(); } nde.unlink(); size--; }
/** * Removes nde from the list it is part of (should be this * one, otherwise results are undefined). If nde is the * current head element, then the next element becomes head, * if there are no more elements the list becomes empty. * @param nde node to remove. */ public void remove(Node nde) { if (nde == null) return; if (nde == head) { if (head.getNext() == head) head = null; // Last node... else head = head.getNext(); } nde.unlink(); size--; }
/** * Get the current tail element * @return The current 'last' element in list. */ public Node getTail() { return head.getPrev(); }
/** * Adds <code>nde</code> to head of list */ public void unpop(Node nde) { nde.insertBefore(head); head = nde; size++; } }
/** * Adds <code>nde</code> to the head of the list. * In perl this is called an 'unpop'. <code>nde</code> should * not currently be part of any list. * @param nde the node to add to the list. */ public void add(Node nde) { if (nde == null) return; nde.insertBefore(head); head = nde; size++; }
/** * Moves <code>nde</code> to the head of the list (equivilent to * remove(nde); add(nde); but faster. */ public void touch(Node nde) { if (nde == null) return; nde.insertBefore(head); head = nde; }
/** * Adds <code>nde</code> to tail of list */ public void push(Node nde) { nde.insertBefore(head); if (head == null) head = nde; size++; }
/** * Adds <code>nde</code> to the head of the list. * In perl this is called an 'unpop'. <code>nde</code> should * not currently be part of any list. * @param nde the node to add to the list. */ public void add(Node nde) { if (nde == null) return; nde.insertBefore(head); head = nde; size++; }
/** * Adds <code>nde</code> to head of list */ public void unpop(Node nde) { nde.insertBefore(head); head = nde; size++; } }
/** * Get the current tail element * @return The current 'last' element in list. */ public Node getTail() { return head.getPrev(); }
/** * Adds <code>nde</code> to tail of list */ public void push(Node nde) { nde.insertBefore(head); if (head == null) head = nde; size++; }
/** * Adds <code>nde</code> to head of list */ public void unpop(Node nde) { nde.insertBefore(head); head = nde; size++; } }
/** * Moves <code>nde</code> to the head of the list (equivilent to * remove(nde); add(nde); but faster. */ public void touch(Node nde) { if (nde == null) return; nde.insertBefore(head); head = nde; }