Discussione: problemi in java
View Single Post
Old 05-11-2004, 20:34   #3
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
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..
boysna è offline   Rispondi citando il messaggio o parte di esso