PDA

Visualizza la versione completa : Array di liste? Implementazione di un dizionario


in4matic
19-12-2014, 19:14
Ciao,
volevo sapere se è possible creare un array di liste e se si come farne la definizione e implementazione.
Tanto per capirci, l'idea è di implementare un dizionario che abbia 26 righe (tante quante ogni lettera dell'alfabeto) e per ogni riga una lista di nomi. Tanto per capirci una cosa simile:



A
Ale
Alessandro
Alessio
Andrea
Asia
Ai


B
Bea
Beatrice
Beat
Bus
Bio
Biologia


C
Cane
Carla
Como
Come
Casa
Cappello


D
Dario
Daniele
Dani
Dea
Doppio
Do


E
Era
Eraclito
Enzo
Ercole
Eccolo
Eco


F
Fra
Francesco
Fre
Frate
Fruscio
Fino



quelli che vedete a sinistra, cioè ABCDEF sono le lettere dell'alfabeto e dovrebbero corrispondere alla cella di un array. Ogni lettera (ad esempio, D) [quindi cella di un array] ha al suo interno una lista contenente tutti i nomi.

Certo, potevo fare un semplicissimo vector o lista, ma la ricerca in un file di moltissimi elementi sarebbe lenta e poco producente: in questo modo, nella ricerca o eliminazione di una parola, il mio programma dovrebbe andare direttamente nella cella riservata alla parola. Se inserisco Ercole, dovrà andare nella cella E, fare una ricerca e una volta trovato il nome poterlo eliminare (o semplicemente ricercare e restituire un return true/False).

L'idea di base mi sembra buona solo che non so come implementare questo tipo di array. Su due piedi avrei detto:
Definisco una struct dictionary con dentro il nome e un puntatore alla cella successiva, poi definisco un array bidimensionale del tipo array[26][dictionary] ma non so se possa essere fatto e funzioni.

Insomma, spero di aver scritto tutto ciò in maniera chiara (anche se, dovendo ancora io stesso schiarirmi le idee, la vedo dura) e spero che possiate aiutarmi e darmi buone idee!
Ciao!

p.s. siccome sono un "novellino" usate termini che io possa capire" :P

oregon
19-12-2014, 19:28
Linguaggio?

in4matic
19-12-2014, 19:28
Scusate... C++ :D
Ora modifico il post!

Scara95
19-12-2014, 19:50
Devi fare un array di liste con 26 celle. La dichiarazione sarà
List dictionary[26];

Comunque senza definirti tutto da te puoi pescare dalla libreria standard l'implementazione di List.

Che sennò sarebbe definita con una struct A che contiene un puntatore ad A, come hai detto tu.

in4matic
19-12-2014, 19:53
ah capito, quindi io definendo list dictionary[26] automaticamente definisco una specie di array bidimensionale con 26 caselle, ottimo"
Quindi per stampare una cella? Mi basterà fare cout << dictionary[5] (ad esempio) oppure dovrò accedere dictionary[5] e con un for stampare tutta la lista?

Scara95
19-12-2014, 20:01
Non c'è nessun array bidimensionale. Hai un array monodimensionale di liste. E non c'è nessuna magia per stampare una lista: Dovrai scorrerla e stampare elemento per elemento.

in4matic
19-12-2014, 20:42
ok, potresti dirmi per bene come dichiarare quindi la mia lista usando uno struct?

Scara95
19-12-2014, 21:41
Il meccanismo per implementare una lista è sempre lo stesso, prova a pensarci da solo e casomai se hai dubbi postaci del codice su cui discutere. Ma inizia da solo e avvaliti dell'aiuto del compilatore.

Loading