Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ricerca in array di liste
Forum - C/C++ - Ricerca in array di liste

Avatar
JErikaM (Normal User)
Newbie


Messaggi: 10
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 10:39
Mercoledì, 04/01/2012
Ciao a tutti :)
Prima di tutto, complimenti per il sito che mi è stato di grande aiuto più e più volte!
Avrei una cosa da chiedere riguardo ad un argomento di C che mi è stato assegnato come tesina per l'esame.
Devo occuparmi di "Ricerca in array di liste", devo quindi cercare se un elemento e indicare se è presente o meno.
Purtroppo con array di liste abbiamo lavorato pochissimo e non mi è ben chiaro come utilizzarle (la tesina invece solo sulle liste l'ho svolta senza problemi, avendo svolto molto l'argomento a lezione).
Per fare questa ricerca, creo la struttura della lista , un array di dimensioni note a mio piacere, ma per inserire all'interno di ogni cella dell'array la lista come devo fare?
E' lecito inserire il puntatore testa della lista all'interno della cella?
ci sono altri modi?

Grazie mille in anticipo :)

Ultima modifica effettuata da JErikaM il 04/01/2012 alle 10:40
PM Quote
Avatar
sarbaturino (Normal User)
Pro


Messaggi: 66
Iscritto: 25/04/2011

Segnala al moderatore
Postato alle 13:46
Mercoledì, 04/01/2012
La ricerca dentro una lista, la dovresti fare con il metodo forza bruta..
Cioè partire dal primo o ultimo elemento e scorrere tutta la lista sino a quando non si verifichi la condizione di uguaglianza con l'elemento da te cercato..


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 13:56
Mercoledì, 04/01/2012
Solitamente si, inserisci le teste delle liste negli elementi dell'array... se poi la lista e' doppiamente collegata potresti anche mettere qualsiasi elemento della lista come elemento nell'array, ma tutto dipende da cosa ci devi fare...

La ricerca dipende da come e' organizzata la struttura, se e' ordinata...


Il mio blog: https://piero.dev
PM Quote
Avatar
JErikaM (Normal User)
Newbie


Messaggi: 10
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 14:11
Mercoledì, 04/01/2012
Testo quotato

Postato originariamente da pierotofy:

Solitamente si, inserisci le teste delle liste negli elementi dell'array... se poi la lista e' doppiamente collegata potresti anche mettere qualsiasi elemento della lista come elemento nell'array, ma tutto dipende da cosa ci devi fare...

La ricerca dipende da come e' organizzata la struttura, se e' ordinata...



La lista è semplice per fortuna!


Testo quotato

Postato originariamente da sarbaturino:

La ricerca dentro una lista, la dovresti fare con il metodo forza bruta..
Cioè partire dal primo o ultimo elemento e scorrere tutta la lista sino a quando non si verifichi la condizione di uguaglianza con l'elemento da te cercato..




Ma come faccio a far sì che al termine della 1 lista si sposti nella seconda cella dell'array e vada quindi nella seconda lista?


edit 15.44
sto lavorando sul codice ma mi sono inceppata prima del previsto ç_ç

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct cella
  5. {
  6. int valore;
  7. struct cella *next;
  8.  
  9. };
  10.  
  11. int main()
  12. {
  13.     struct cella *temp;
  14.     struct cella *nuovo;
  15.     struct cella *testa;
  16.     int i;
  17.     struct cella *array[3];
  18.     for(i=0;i<3;i++)
  19.         {
  20.        array[i]=NULL;
  21.         }
  22.        
  23.     printf("Inserisco gli elementi nella lista 1");
  24.     printf("\n");
  25.     nuovo = (struct cella*)malloc(sizeof(struct cella));  //ho allocato lo spazio in memoria per la prima cella della lista
  26.     nuovo->next = testa;
  27.     testa = nuovo;
  28.  
  29. nuovo = array[0] //associo a nuovo l'indice 0 dell'array e gli inserisco il valore
  30.     scanf("%d", &array[0]->valore);
  31.     array[0]->next = array[0];
  32.    
  33. system("pause");    
  34. return 0;
  35.    
  36. }



ma mi da errore...cioè compilo poi da errore...
sicuramente ho sbagliato qualcosa ma non saprei cosa O_O

Ultima modifica effettuata da JErikaM il 04/01/2012 alle 15:46
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:15
Mercoledì, 04/01/2012
Puoi fare un ciclo for nestato da un while... il ciclo for itera tutti gli elementi dell'array, il while all'interno del for itera gli elementi della lista finche' non incontri un puntatore nullo...


Il mio blog: https://piero.dev
PM Quote
Avatar
JErikaM (Normal User)
Newbie


Messaggi: 10
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 16:28
Mercoledì, 04/01/2012
Testo quotato

Postato originariamente da pierotofy:

Puoi fare un ciclo for nestato da un while... il ciclo for itera tutti gli elementi dell'array, il while all'interno del for itera gli elementi della lista finche' non incontri un puntatore nullo...



se riesco ad arrivare a questo punto lo farò ;) ora sono bloccata al codice scritto sopra :S

PM Quote