Originariamente inviato da VincenzoTheBest
Ok, però dovresti far vedere come è definita la lista su cui vuoi costruire il metodo. Leggendo il codice sembra che si tratti di una implementazione che usa le strutture collegate, però non è abbastanza per conoscere esattamente la realizzazione.
codice:
public class MiaLista {

    private class ListElem {
    
        private int dato;
        private ListElem next = null;

        public int getDato() {
            return dato;
        }
  
        public void setDato(int dato) {
            this.dato = dato;
        }

        public ListElem getNext() {
            return next;
        }
    
        public void setNext(ListElem next) {
            this.next = next;
        }

        public boolean equals(int val) {
            return dato == val;
        }

        public void draw() {
            System.out.print("["+ dato + "|");
            if (next == null)
                System.out.print("null");
            else
                System.out.print("next");
            System.out.print("]");
        }
    }
    
    private ListElem first;
 
    public MiaLista() {
        first = null;
    }

    public void insert(int val) {

        ListElem elem = new ListElem();
        elem.setDato(val);
        elem.setNext(first);

        first = elem;

    } 
 
    public boolean delete(int val) {

        boolean found = false;
       
        if (this.isEmpty())
	    return false;

        if (first.equals(val)) {
           // L'elemento cercato e` il primo, quindi devo
           // modifiare first
           first = first.getNext();
           found = true;
        }
        else {
           // L'elemento cercato non e` il primo, devo modificare
           // un elemento generico
           ListElem iterator = first;
           while ((iterator.getNext()) != null && !found)
               if ((iterator.getNext()).equals(val)) {
                   iterator.setNext((iterator.getNext()).getNext());
                   found = true;
               }
               else 
                   iterator = iterator.getNext();
        }
        return found; 

    }

    public boolean delete_bis(int val) {

        if (first.equals(val)) {
            // L'elemento cercato e` il primo, quindi devo
            // modifiare first
            first = first.getNext();
            return true;
        }
        else {
            // L'elemento cercato non e` il primo, devo modificare
            // un elemento generico
            ListElem iterator = first;
            while ((iterator.getNext()) != null)
                if ((iterator.getNext()).equals(val)) {
                    iterator.setNext((iterator.getNext()).getNext());
                    
                    return true;
                }
                else 
                    iterator = iterator.getNext();
        }
        return false; 
    }

    public boolean isEmpty() {
        return first == null;
    }

    public boolean member(int val) {
        ListElem iterator = first;
        boolean found = false;
        while ((iterator != null) && !found) 
            if (iterator.equals(val))
                found = true; 
            else
                iterator = iterator.getNext();
        return found; 
    }

    // Alternativa all'utilizzo di found
    public boolean member_bis(int val) {
        ListElem iterator = first;
        while ((iterator != null)) 
            if (iterator.equals(val))
                return true;
            else
                iterator = iterator.getNext();
        return false; 
    }

    public void printList() {
        ListElem iterator = first;
        System.out.print("Elementi: ");
        while (iterator != null) {
            System.out.print(iterator.getDato() + ",");
            iterator = iterator.getNext();
        }
        System.out.println("");
    }  

    public void draw() {
        ListElem iterator = first;
        if (first == null)
            System.out.print("this_MiaLista-->[|first==null|]");
        else
            System.out.print("this_MiaLista-->[|first|]");
        while (iterator != null) {
            System.out.print("-->");
            iterator.draw();
            iterator = iterator.getNext();
        }
        System.out.println("");
    }  

    // Altri metodi un po' piu` specializzati
    
    public void insertFirst(int val) {
        insert(val);
    }
 
    public void insertLast(int val) {

        ListElem elem = new ListElem();
        elem.setDato(val);

        if (first == null) 
            first = elem;
        // Alternativa:
        // if (isEmpty()) 
        //    insertFirst(val);
        else {
            ListElem iterator = first;
            while (iterator.getNext() != null)
                iterator = iterator.getNext();
            iterator.setNext(elem);
        }
        
    }        

    public boolean deleteFirst() {

        if (first == null) 
        // Alternativa:
        // if (isEmpty()) 
            return false;
        else {
            first = first.getNext();
            return true;
        }    
        
    }

    public boolean deleteLast() {
        if (first == null)
        // Alternativa:
        // if (isEmpty()) 
            return false;
        else if (first.getNext() == null) {
            // Ha un solo elemento, devo modificare first!
            first = first.getNext();
            // Alternativa:
            // first = null;
            // Altra alternativa:
            // deleteFirst();
            return true;
        }
        else {
            ListElem iterator = first;
            while (iterator.getNext().getNext() != null) 
                iterator = iterator.getNext();
            iterator.setNext(null);
            return true;
        }
    }

    // I due metodi successivi sono un po' problematici per
    // via delle situazioni di errore che non possono essere
    // segnalate coerentemente con un valore di ritorno opportuno
    public int getFirstDato() {
        return first.getDato();
    }

    public int getLastDato() {
        ListElem iterator = first;
        while (iterator.getNext() != null)
            iterator = iterator.getNext();
        return iterator.getDato();
    }
}