Metodi sulle liste

di il
3 risposte

Metodi sulle liste

Ciao, ho creato una classe Lista e all'interno ho alcuni metodi che non mi funzionano, compilano ma non fanno ciò che dovrebbero..

class Lista {

	private Node first;

	public Lista() {
		first = null;
	}

	public Lista(Node node) {
		first = node;
	}

        ... altri metodi...

	// Restituisce true se esiste almeno un elemento che è uguale al prodotto
	// dei suoi successori e i successori sono v, v-1,..,1(in ordine qualunque).
	// False altrimenti
	public boolean verificaSerie() {
		if (first == null)
			return false;
		Node iterator = first;
		boolean bool = false;
		int prod = 1;
		while (iterator != null) {
			prod = iterator.getNext().getCargo() * prod;
		}
		if (iterator.getCargo() == prod)
			bool = true;

		else
			return false;
		return bool;
	}

	// Questo metodo deve restituire true se val appartiene alla lista e se tutti 
	// i successori di val sono multipli di val, false altrimenti
	public boolean tuttiSuccessoriMultipliVal(int val) {
		if (first == null || !this.member(val))
			return true;
		boolean bool = false;
		Node iterator = first;
		Node iterator1 = first;
		while (iterator != null) {
			if (iterator.getCargo() == val) {
				while (iterator1 != null) {
					if (iterator1.getNext().getCargo() % val == 0) {
						bool = true;
					}
					else
						bool = false;
				}
			}
			else {
				iterator = iterator.getNext();
				iterator1 = iterator1.getNext();
			}
		}
		return bool;
	}

	// Inserisce un nodo x dopo il nodo y se x = somma dei successivi nodi di y
	public boolean inserisciSe(int x, int y) {
		if (first == null)
			return false;
		boolean bool = false;
		Node iterator = first;
		while (iterator != null) {
			if (iterator.getCargo() == y) {
				int sum = 0;
				while (iterator != null) {
					sum = sum + iterator.getNext().getCargo();
				}
				if (sum == x) {
					iterator.setNext(new Node(x, iterator.getNext()));
					bool = true;
				}
				else
					iterator = iterator.getNext();
			}
			else
				iterator = iterator.getNext();
		}
		return bool;
	}

        // Deve restituire la lunghezza della sequenza più lunga negativa. 
	public int sequenzaNegativa() {
		if (first == null)
			return -1;
		int cont = 0;
		Node iterator = first;
		while (iterator != null || iterator.getNext.getCargo() > 0) {
			if (iterator.getCargo() < 0)
				cont ++;
		}
	}

	public String toString() {
		Node iterator = first;
		String tmp = "";
		while (iterator != null) {
			tmp = tmp + iterator.getCargo() + ", ";
			iterator = iterator.getNext();
		}
		return tmp;
	}
}
Qualcuno può aiutarmi?
Grazie mille!

3 Risposte

  • Re: Metodi sulle liste

    Ti danno errori o i risultati non sono coerenti?

    quando fai dei check del tipo "x e successivi" ricordati che basta che sia "falsificata" una volta per essere sempre falsa...quindi io inizierei col togliere la variabile booleana e controllare solo il caso di errore, e in quel caso fare il return false;
  • Re: Metodi sulle liste

    Non ho capito, potresti postarmi il codice?
    Comunque grazie per la risposta
  • Re: Metodi sulle liste

    Cosa non hai capito? ti danno errori i metodi o ti danno risultati non attesi
Devi accedere o registrarti per scrivere nel forum
3 risposte