Anche a me lo scheletro sembra essere fatto molto male! Perché in un corso precedente ho fatto sempre una lista ma fatta meglio e soprattutto chiara concettualmente e di seguito posto lo scheletro.

codice:
public class MiaLista {
	private ListElem first;
	//Metodi della classe MiaLista
	public void printList () { ...}
	public void insertFirst (int val) {...}
	public boolean deleteFirst () {...}
	public boolean inLista (int val) {...}
	public boolean modifElem (int oldVal, int newVal) {...}
	public boolean insertAfter (int precElem, int newVal) {...}
	public boolean deleteElem (int val) {...}
	public void eliminaDuplicati() {...}
	public void insertLast(int val) {...}
        public boolean deleteLast() {...}
//	ListElem
	private class ListElem {
		public int dato;
		public ListElem next;
	        public int getDato() {...}
	        public void setDato(int dato) {...}
	        public ListElem getNext() {...}
	        public void setNext(ListElem next) {...}
		//Metodi della classe ListElem
		private boolean inListaIntern (int val) {...}
		private boolean modifElemIntern (int oldVal, int newVal) {...}
		private boolean insertAfterIntern (int precElem, int newVal) {...}
		private boolean deleteElemIntern (int val) {...}
		private void eliminaDuplicatiIntern() {...}
		public void eliminaSingElem (int valore) {...}
	}
}