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(); } }

Rispondi quotando