Salve a tutti sono iscritto al 2 anno di informatica. Ho un progetto che mi sta causandoun pò di problemi.
Non sto a spiegare tutto il progetto che devo fare perchè sarebbe troppo lungo![]()
Immaginate di avere una lista riempita in un modo molto complesso, tramite la funzione Inserisci.
Dal main viene richiamata la funzione CostruisciArray che deve costruire l'array di puntatori, dove ogni elemento dell'array punta ad un nodo della lista.
La stuttura del nodo della lista è:
struct lista{
int Frequenza;
char Parola[20];
char Lemma[10];
char Pos[10];
struct lista *nodo_successivo;}
typedef struct lista *Lista;
nel Main dichiaro l'array di puntatori di tipo Lista
Lista *A;
dopo la funzione inserisci so quante sono le parole dell'articolo(N_parole)
come si alloca dinamicamente un array di puntatori?
semplicemente così?
malloc(N_Parole * sizeof( struct lista**));
una volta allocato l'array lo passo alla funzione Costruisci Array:
CostruisciArray(A,testa,N_Parole);
nella funzione costruisci array come deve avvenire l'assegnazione?
CostruisciArray(Lista **A, Lista testa, int N_parole){
int i=0;
while(i<=N_parole && testa!=NULL){
A[i]= &testa;
testa=testa->nodo_successivo;
i++;}
}
mentre la funzione StampaVettore sempre chiamata dal main da Stampa vettore(A,N_Parole);
int StampaVettore(Lista **A, int N_Parole){
int i;
for(i=0;i<=N_parole;i++){
printf("\nParola: %s, Lemma: %s, Pos: %s, Frequenza %d \n", (*A[i])->Parola, (*A[i])->Lemma, (*A[i])->Pos, (*A[i])->Frequenza);
}
}
il problema è che non va, o si blocca, o mi stampa simboli strani e poi si blocca... o mi stampa sempre i stessi simboli strani fino all'ultima parola.
Dopo questo, dal main dovrei richiamare heapsort e quicksort per ordinare in base alla frequenza e in ordine alfabetico delle parole... Il programma funziona se uso un array di tipo Lista e associo ad ogni elemento un nodo, ma se invece uso l'array di puntatori non va, il professore ovviamente vuole l'array di puntatori!![]()
Vi prego datemi qualche suggerimento, perchè è da una settimana che sono bloccato!