Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Complete è un robot aspirapolvere che coniuga un'aspirazione potente e un lavaggio con rullo a logica di intelligenza artificiale che guida al meglio nella pulizia di casa: rulli e spazzole estensibili a pulire gli angoli e una base di ricarica che lava e ripristina il robot al emglio delle sue funzionalità dopo ogni azione di pulizia
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-07-2008, 15:15   #1
moka
Senior Member
 
L'Avatar di moka
 
Iscritto dal: Jan 2005
Messaggi: 3577
[Java][LinkedList]

devo fare un esercizio in preparazione di un esame universitario, ma non riesco a uscirne fuori qualcuno saprebbe aiutarmi?
la cosa da cui proprio non riesco a cavarmi fuori è come fare a puntare ciclicamente all' elemento next, dovendo passare per head è una cosa difficile da spiegare copio l'esercizio faccio prima

questa è la classe:

public class ListLinked {
private Node head;

private class Node {
private String content;
private Node next;

public Node(String c, Node n) {
content = c;
next = n;
}

public Node(String c) { this(c, null); }
}

public ListLinked() {
head = null;
}

public boolean isEmpty() { return head == null; }

public void addToStart(String s) {
Node newNode = new Node(s, head);
head = newNode;
}

public static ListLinked cons(String c, ListLinked l) {
ListLinked result = new ListLinked();
result.addToStart(c);
if (l != null) result.head.next = l.head;
return result;
}

public String first() { return isEmpty() ? null : head.content; }

public ListLinked rest() {
if (isEmpty()) {
return null;
}
else {
ListLinked result = new ListLinked();
result.head = head.next;
return result;
}
}

public ListLinked concatenate(ListLinked l) {
if (isEmpty()) {
return l;
}
else {
return cons(first(), rest().concatenate(l));
}
}

public int printLength = 5;
public int setPrintLength(int pl) { return printLength = pl; }
public int getPrintLength() { return printLength; }

public String toString() {
String result;

if (isEmpty()) {
return "()";
}
else {
int i;
Node n;

result = "(" + head.content;
for (n = head.next, i = 1;
n != null || (printLength > 0 && i > printLength);
n = n.next, i++) {
result += " " + n.content;
}

if (printLength > 0 && i > printLength) result += "...";
result += ")";
return result;
}
}



public static void main(String[] args) {
ListLinked l = cons("A", cons("B", cons("C", null)));

System.out.println(l);
}
}

questi i metodi da implementare:

public ListLinked reverse(); // Inverte una lista
public ListLinked remove(String s); // Crea una nuova lista con 's' rimosso.
public ListLinked oddList(); // Crea una nuova lista con solo gli elementi in posizione dispari.
public ListLinked evenList(); // Crea una nuova lista con solo gli elementi in posizione pari.
public int length(); // Riscrivere *senza* usare cicli; potete fare un overload.

mi basta che me ne venga risolto / spiegato uno fra questi, poi dopo per gli altri ci penso io grazie per la pazienza
__________________
L'EMPOLI NON SI DISCUTE... SI AMA
moka è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2008, 18:24   #2
moka
Senior Member
 
L'Avatar di moka
 
Iscritto dal: Jan 2005
Messaggi: 3577
in particolare il mio problema sta nel poter richiamare ciclicamente l'attributo next che è un oggetto della classe stessta, la quale è un attributo della altra classe.

tanto per farmi capire, a parole è difficile:
(mi scuso per la qualità delle immagini )


dunque, mettiamo caso che io devo trovare il nodo che nell'attributo di tipo stringa val ha valore "ciao", e poi stampare a video il contenuto del nodo successivo(next), come posso fare?
__________________
L'EMPOLI NON SI DISCUTE... SI AMA
moka è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2008, 15:03   #3
moka
Senior Member
 
L'Avatar di moka
 
Iscritto dal: Jan 2005
Messaggi: 3577
Quote:
Originariamente inviato da moka Guarda i messaggi
public ListLinked reverse(); // Inverte una lista
Codice:
public ListLinked reverse(){
    	ListLinked k=new ListLinked();
    	Node n=new Node(null, head);
    	Vector<Node>v=new Vector<Node>(1);
    	if(head==null){
    		System.out.println("la lista è vuota!");
    	}else{
    		while(n.next!=null){
    			v.add(n.next);
    			v.setSize(v.size()+1);
    			n=n.next;
    		}
    		Node[]q=new Node[v.size()];
    		for(int i=0;i<v.size();i++){
    			q[i]=v.get(v.size()-i-1);
    		}
    		for(int i=0;i<v.size();i++){
    			q[i].next=q[i+1];
    		}
    		k.head=q[0];
    	}
    	return k;
    	
    }
mi da errore sul finale
__________________
L'EMPOLI NON SI DISCUTE... SI AMA
moka è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2008, 16:51   #4
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
dunque, mettiamo caso che io devo trovare il nodo che nell'attributo di tipo stringa val ha valore "ciao", e poi stampare a video il contenuto del nodo successivo(next), come posso fare?
devi scandire la lista fino a che non trovi il nodo in questione...

Codice:
Node aux = head;
while(aux != null && !aux.val.equals("ciao") {
   aux = aux.next;
}
if(aux != null && aux.next != null) {
      System.out.println(aux.val);
}
il ciclo while dice: avanzo nella lista fino a che non sto puntando ad un elemento Node nullo oppure l'elemento attuale ha il campo val uguale a "ciao".
Terminato il while ho 2 possibilità:
1) ho scorso tutta la lista e quindi non ho trovato nessun elemento il cui campo val è "ciao" (quindi aux = null)
2) ho trovato l'elemento il cui campo val è "ciao" e quindi aux punta a quello.

in questo secondo caso allora devo controllare se l'elemento successivo ad aux è null, in caso contrario stampo il suo val.

NB: tutti i controlli rispetto a null si devono fare altrimenti viene lanciata una NullPointerExceptio a runtime.

NMB: non ci metto la mano sul fuoco....tra l'altro sono senza compilatore e non posso provare.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2008, 18:20   #5
moka
Senior Member
 
L'Avatar di moka
 
Iscritto dal: Jan 2005
Messaggi: 3577
Quote:
Originariamente inviato da Oceans11 Guarda i messaggi
devi scandire la lista fino a che non trovi il nodo in questione...

Codice:
Node aux = head;
while(aux != null && !aux.val.equals("ciao") {
   aux = aux.next;
}
if(aux != null && aux.next != null) {
      System.out.println(aux.val);
}
il ciclo while dice: avanzo nella lista fino a che non sto puntando ad un elemento Node nullo oppure l'elemento attuale ha il campo val uguale a "ciao".
Terminato il while ho 2 possibilità:
1) ho scorso tutta la lista e quindi non ho trovato nessun elemento il cui campo val è "ciao" (quindi aux = null)
2) ho trovato l'elemento il cui campo val è "ciao" e quindi aux punta a quello.

in questo secondo caso allora devo controllare se l'elemento successivo ad aux è null, in caso contrario stampo il suo val.

NB: tutti i controlli rispetto a null si devono fare altrimenti viene lanciata una NullPointerExceptio a runtime.

NMB: non ci metto la mano sul fuoco....tra l'altro sono senza compilatore e non posso provare.
non ti preoccupare, è tutto giusto quello che dici!
MA questo esercizio l'avevo da poco capito anche io...
ho dubbi sul reverse, per esempio, ma secondo te se riesco a farlo con i Vector, funziona la cosa? è giusta?
__________________
L'EMPOLI NON SI DISCUTE... SI AMA
moka è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2008, 22:32   #6
moka
Senior Member
 
L'Avatar di moka
 
Iscritto dal: Jan 2005
Messaggi: 3577
che mi dite di iterator?
__________________
L'EMPOLI NON SI DISCUTE... SI AMA
moka è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2008, 07:00   #7
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
mi deve essere sfuggita qualche cosa allora....!


cmq per il reverse stavo pensando a semplici inserimenti e rimozioni. Mi spiego meglio.

Non è necessario l'utilizzo di una struttura dati ausiliaria. Si può benissimo prendere il elemento della prima lista, rimuoverlo dalla prima ed inserirlo in testa ad una seconda (etc...), che è poi quella che devi restituire, no?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2008, 14:34   #8
Lukas17
Member
 
L'Avatar di Lukas17
 
Iscritto dal: Nov 2006
Città: Monza
Messaggi: 70
Se ti serve ancora questo è il metodo Reverse funzionante:


public ListLinked reverse(){ // inverte una lista
Node curr = head;
if(curr == null) throw new NoSuchElementException();
if(curr.next == null) {return null;}
Node temp = null;
while (curr != null) {
Node next = curr.next;
curr.next = temp;
temp = curr;
curr = next;
}
head = temp;
return null;
}
__________________
Lµкє ™
Lukas17 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Arianespace Ariane 6: lanciato il satell...
Starship: la nave Forte ha caricato Ship...
ROCm 10 punta sull'AI agentica: AMD auto...
Meta cambia la privacy degli AI Glasses:...
Google ha lanciato Gemini 3.5 Transcribe...
MOVA M10, il lavapavimenti leggero che a...
DLSS 5 funziona anche sulle GeForce RTX ...
GeForce Now, 13 nuovi titoli supportati ...
Mac Studio e Mac mini, il genlock arriva...
Kyndryl porta l’IA agentica nella gestio...
L'era dello smartphone economico è...
NVIDIA mette il freno al suo progetto pi...
Corsair iCUE LINK TITAN II 360 RX LCD: l...
Scritti dalle AI per le AI: la fabbrica ...
La RTX 3060 da 12 GB è tornata ma il pre...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v