Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    20

    Array di liste? Implementazione di un dizionario in C++

    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
    Ultima modifica di in4matic; 19-12-2014 a 20:29

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Linguaggio?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    20
    Scusate... C++
    Ora modifico il post!

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    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.
    Ultima modifica di Scara95; 19-12-2014 a 21:02 Motivo: correzione caratteri accentati
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    20
    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?

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    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.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    20
    ok, potresti dirmi per bene come dichiarare quindi la mia lista usando uno struct?

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    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.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.