package a6; public final class ListHead { public ListHead next; public ListHead prev; public Object data; public ListHead() { init(); } public final void del() { next.prev = prev; prev.next = next; init(); } public final void delInit() { del(); } public final void addTail(ListHead pnew) { ListHead tmp_prev = prev; prev = pnew; pnew.next = this; pnew.prev = tmp_prev; tmp_prev.next = pnew; } public final Object firstEntry() { return next.data; } public final void replace(ListHead pnew) { pnew.next = next; pnew.next.prev = pnew; pnew.prev = prev; pnew.prev.next = pnew; pnew.data = data; } public final void replaceInit(ListHead pnew) { replace(pnew); init(); } public final boolean empty() { return next == this; } public final void init() { next = this; prev = this; } }