Pages: [1]   Go Down
Print
Author Topic: uso di più strutture dati;  (Read 826 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« on: 03-10-2011, 10:45:15 »

Ho un problema con i tipi generici , nello specifico  quando creo una classe (esempio albero binario di ricerca)con il suo nodo e devo implementare un altra classe Stack<E> con il suo nodo(Nodo<E>) mi da errore di duplicate class: Nodo
Come lo risolvo? Quante classi nodo devo mettere? una per l'albero e una per lo Stack oppure una sola classe nodo che contenga tutte le informazioni??
Grazie
Code:

//NODO ALBERO
class Nodo<E>{
private E element;
private Nodo<E> parent,figliosx,figliodx;
public Nodo(E element, Nodo<E> parent , Nodo<E> figliosx, Nodo<E> figliodx){
....
}
+ get e set;
}

// CLASSE ALBERO
class AlberoBinario<E>{
...
}

//NODO STACK
class Nodo<E>{
  private E element;
  private Nodo<E> next;
  public Nodo(E element,Nodo<E> next){
...
}
}
//CLASSE STACK
class Stack<E>{
...
}

Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 03-10-2011, 10:53:03 »

Se vuoi necessariamente usare lo stesso nome base (Nodo) per tutte e due le classi, ci sono vari modi per farli funzionare:

- usare un package diverso: è come se ogni classe fosse in una (sotto)cartella diversa (ed in realtà, dovrà essere così in effetti), e potrà essere referenziata con il suo (class)path preciso;

- annidare la classe Nodo dentro un'altra classe, ad esempio Stack, (aumentando di un livello il suo path, come se la classe dentro cui sta Nodo fosse il suo package; forse sarebbe meglio chiamarli "namespace" ma questo concetto in Java non esiste e si può inquadrare in un certo modo dentro i packages;
Ciao ciao .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #2 on: 03-10-2011, 11:03:40 »

Quando ad esempio, all'interno della classe alberobinario ho un istruzione del tipo:
Code:
s.push(y.getFiglioSinistro());
  ed
- s.push prende il nodo dello stack,
- y.getFiglioSinistro() usa il nodo dell'albero
mi da errore in compilazione  "  push(Nodos) in Stack cannot be applied to (Nodo<E>) ",
avendo chiamato Nodos<E> il nodo dello Stack e Nodo<E> il nodo dell'albero.
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #3 on: 03-10-2011, 11:55:59 »

Quando ad esempio, all'interno della classe alberobinario ho un istruzione del tipo:
Code:
s.push(y.getFiglioSinistro());
  ed
- s.push prende il nodo dello stack,
- y.getFiglioSinistro() usa il nodo dell'albero
mi da errore in compilazione  "  push(Nodos) in Stack cannot be applied to (Nodo<E>) ",
avendo chiamato Nodos<E> il nodo dello Stack e Nodo<E> il nodo dell'albero.

Queste informazioni non sono sufficienti a me per capire dove sta il tuo problema di preciso (ci sono varie ipotesi). Posta tutto il codice (magari in un file .zip o .rar o .tar.bz2 o .tar.gzip linkato su galileo) e lo potrò vedere nel suo complesso.
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1]   Go Up
Print
Jump to: