|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
però mi sembra proprio semplice così, anche se ammetto che l'idea dello stack è di gran lunga più elegante
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
|
#22 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
sarò io!?!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
quindi lista libera la creo in questo modo:
Codice:
void lista_libera(int x[]){
int i;
for(i=0;i<7;i++){
x[i]=i+1;
}
x[i++]=-1;
}
|
|
|
|
|
|
#26 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì
|
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
non capisco queste immagini relative ai nodi le metto in allegato
|
|
|
|
|
|
#28 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
ecco la seconda, perchè next viene decrementato a -1 se dovrebbe puntare al nodo successivo?
|
|
|
|
|
|
#29 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Io farei qualcosa cosi' Codice:
typedef ... Info;
typedef size_t Ptr;
#define MEMORY_SIZE ...
#define NULL_NODE MEMORY_SIZE
struct Node { Info data; Ptr next; };
Node memory[MEMORY_SIZE];
Ptr myList;
void initFreeList();
Ptr nodeAlloc();
void nodeFree(Ptr);
...
Codice:
void append( Ptr list, Info value )
{
while ( memory[list].next != NULL_NODE )
list = memory[list].next;
memory[list].next = nodeAlloc();
list = memory[list].next;
memory[list].data = value;
memory[list].next = NULL_NODE;
}
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#30 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ah ok, stanno cercando di fare una finezza
In pratica ti puoi gestire tutto con due soli vettori, uno di informazioni (mettiamo che siano interi) ed uno di indici. Di fatto il nodo è composto dalla sola informazione, non c'è next come avevamo detto. Mettiamo che la situazione sia questa (8 elementi): - lista dei liberi: 1 -> 5 -> 3 -> 7 - lista occupati (fra parentesi il valore delle informazioni): 6 (1) -> 0 (2) -> 2 (3) -> 4 (4) I due vettori saranno (D = Dati. P = Puntatori): Codice:
p_liberi = 1 p_occupati = 4 D I 0 2 2 1 x 5 <--- p_liberi 2 3 4 3 x 7 4 4 -1 <--- fine lista occupati 5 x 3 6 1 0 <--- p_occupati 7 x -1 <--- fine lista liberi |
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Vado a memoria (non ce l'ho sotto mano) ma mi sembra che sia piu' o meno come e' spiegato nel Cormen.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
i vostri esempi sono molto buoni, quello ci cionci mi sembra però più semplice e comprensibile per me, forse lui ha capito bene quello che il mio esercizio vuole.
Cionci non vorrei essere ripetitivo ma l'array degli indici va sempre inizializzato come ti ho fatto vedere nell'algoritmo di prima? Codice:
void lista_libera(int x[]){
int i;
for(i=0;i<7;i++){
x[i]=i+1;
}
x[i++]=-1;
}
p_liberi all'inizio è inizializzato a 0 o a 1???????????????? mentre p_occupati all'inizio è inizializzato a -1??? Ultima modifica di Prince_81 : 21-09-2008 alle 11:31. |
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
Finalmente ho capito cosa mi confondeva nell'esempio che vi ho fornito con le immagini, era la visaulizzazione delle informazioni che io prentendevo avvenisse partendo dalla lettera A, mentre la testa è p_data ed è da li che bisogna iniziare a leggere le informazioni, ecco un immagine di quanto detto.
|
|
|
|
|
|
#34 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
Grazie ragazzi e soprattutto a te Cionci che hai capito fin da subito cosa voleva l'esercizio e con i tuoi esempi mirati mi hai guidato verso la soluzione.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:44.




















