線形リストLinkedList <E >に対する演習9-1(p.299)と同じ課題を、循環・重連結リストDblLinkedList <E >に対して行え。
|
//--- コンパレータcによって互いに等しいとみなせるノードをすべて削除 ---// public void purge(Comparator<? super E> c) { Node<E> ptr = head.next; while (ptr.next != head) { int count = 0; Node<E> ptr2 = ptr; Node<E> pre = ptr; while (pre.next != head) { ptr2 = pre.next; if (c.compare(ptr.data, ptr2.data) == 0) { pre.next = ptr2.next; count++; } else pre = ptr2; } if (count == 0) ptr = ptr.next; else { Node<E> temp = ptr; remove(ptr); ptr = temp.next; } } crnt = head; }