Sinceramente per lista concatenata a puntatori espliciti , non so cosa si intenda di preciso.
Cmq ti posto il codice di quest'ultima cosi ti rendi conto meglio :
codice:
package poo.lista;
import java.util.*;
public class ListaConcatenata<E> implements Iterable<E> {
private static class Nodo<T> {
T info;
Nodo<T> next;
Nodo(T info) {
this.info = info;
}
}
private int size;
private Nodo<E> testa;
private Nodo<E> coda;
public void inserisci(E c) {
Nodo<E> n = new Nodo<E>(c);
if (testa == null)
testa = n;// inserisci in testa
else
coda.next = n;
coda = n;
size++;
}
public boolean rimuovi(E c) {
Nodo<E> pre = null;
Nodo<E> cor = testa;
while (cor != null) {
if (cor.info.equals(c)) {
if (pre == null)
testa = cor.next;
else
pre.next = cor.next;
if (cor == coda)
coda = pre;
cor.next = null;
size--;
return true;
}
pre = cor;
cor = cor.next;
}
return false;
}
public boolean contiene(E c) {
Nodo<E> cor = testa;
while (cor != null) {
if (cor.info.equals(c))
return true;
cor = cor.next;
}
return false;
}
public int size() {
return size;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(size * 10);
sb.append("[");
Nodo<E> cor = testa;
while (cor != null) {
sb.append(cor.info);
sb.append(" ");
cor = cor.next;
}
sb.append("]");
return sb.toString();
}
@Override
public Iterator<E> iterator() {
return new IteratoreLista();
}
class IteratoreLista implements Iterator<E> {
private Nodo<E> cor = null;
private Nodo<E> pre = null;
@Override
public boolean hasNext() {
if (cor == null)
return testa != null;
return cor.next != null;
}
@Override
public E next() {
if (!hasNext())
throw new NoSuchElementException();
pre = cor;
if (cor == null)
cor = testa;
else
cor = cor.next;
return cor.info;
}
@Override
public void remove() {
if (pre == cor)
throw new IllegalStateException();
if (cor == testa) {
testa = testa.next;
} else {
pre.next = cor.next;
}
if (cor == coda)
coda = pre;
cor = pre;
--size;
}
}
}
Tornando al mio problema , ho scritto cosi :
codice:
public class ContenitoreDatiLC<E> extends ContenitoreDatiAstratto<E> {
class ListaConcatenata<E> implements Iterable<E>{
private static class Nodo<T>{
Però Eclipse mi da errore dicendomi che non posso dichiarare la classe static
(The member type Nodo cannot be declared static; static types can only be declared in static or top level types)