|
Si tratta di implementare il tipo d dato lista, la lista è formata da vari nodi collegati tra loro:ogni nodo o link ha un campo element ke contiene il dato e un campo next ke punta al link successivop.
I metodi ke danno problemi sono size, insertLast e deleteLast.
Questa è la classe ke testa i metodi implementati:
package implementazione_di_uno_stack;
import implementazione_di_uno_stack.ArrayStack;
import javax.swing.JOptionPane;
import java.lang.Object;
public class classe_testante {
public static void main(String[] args)
{
LinkList lista = new LinkList(); //Crea nuova lista
Link head = new Link(); //Crea il primo nodo della lista
Link tail = new Link(); //Crea l'ultimo nodo della lista
String num_oggetti_input_lista =
JOptionPane.showInputDialog("Oggetti da inserire nella lista?");
int num_oggetti_lista = Integer.parseInt(num_oggetti_input_lista);
for (int i=0; i < num_oggetti_lista; i++)
{
String oggetto_inserito_input =
JOptionPane.showInputDialog("Inserisci l'elemento successivo");
Object o = oggetto_inserito_input;
lista.insertFirst(o); //Inserisce tutti i link inseriti dall'utente
}
System.out.println("La lista ha" + lista.size() + "elementi");
System.out.println("L'head è " + head.getElement() + " e il suo successore è " +
head.getNext() + ",l'ultimo è " + tail.getElement());
head.setElement("sono il primo elemento");
System.out.println("L'elemento del primo nodo è stato sostituito con" + head.getElement());
head.setNext(tail);
System.out.println("Il Next del primo nodo è stato sostituito con l'ultimo che è:" + tail.getElement());
System.exit(0); //Vengono usati tutti i metodi
}
}
Questa è la classe Link x implementare i link d cui è composta la lista:
package implementazione_di_uno_stack;
class Link
{
public Object element;
public Link next;
public Link (Object e, Link n) //Ogni link ha un elemento e un puntatore al prossimo link
{
element = e;
next = n;
}
public Link ()
{
this(null, null);
}
public Object getElement() //Restituisce l'elemento del link
{
return element;
}
public Link getNext() //Restituisce il link successivo
{
return next;
}
public void setElement(Object newElement) //Imposta un nuovo elemento al posto di quello precedente
{
element = newElement;
}
public void setNext(Link newNext) //Imposta un nuovo link successivo al posto di quello ke c'era prima
{
next = newNext;
}
}
Questa è la classe LinkList x implementare la lista completa:
package implementazione_di_uno_stack;
public class LinkList
{
public Link head; // riferimento al primo link della lista
public Link tail; // riferimento all'ultimo link della lista
public int size = 0; //la taglia dela coda all'inizio è 0
public void LinkList()
{
head = null;
tail = null; // ancora nessun link nella lista
}
public boolean isEmpty() //vrifica se la lista è vuota o meno
{
return (head == null);
}
public void insertFirst(Object e) // inserimento all'inizio della lista
{
Link newLink = new Link(e, head);
head = newLink;
size ++;
}
public Link deleteFirst() // cancellazione all'inizio della lista
{
Link temp = head;
head = head.next;
size --;
return temp;
}
public int size(LinkList lista) //restituisce il numero di link nella lista
{
int j = lista.size;
return j;
}
public void insertLast(Object e) //inserimento alla fine
{
Link newLink = new Link(e, null);
tail.next = newLink;
tail = newLink;
size ++;
}
public Link deleteLast() //cancellazione alla fine
{
Link current = head;
int i = 0;
while(i!= size() - 1){
if(current.next == null)
throw new StackEmptyException("no");
else
current = current.next;
i++;
}
current.next=null;
tail = current;
}
}
Grazie dell'aiuto...
Ciao..
|