Mer 21 Agosto, 09:08:28 - 2019

Autore Topic: Esercizio esame su stringhe! Urgente!  (Letto 656 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline yellow

  • Neo-Laureato
  • **
  • Post: 59
  • FeedBack: +1/-0
    • Mostra profilo
Esercizio esame su stringhe! Urgente!
« il: Mar 13 Gennaio, 12:16:12 - 2015 »
Mi sono impantanato su un esercizio di esame e non ne riesco ad uscire fuori, il testo è il seguente:
Si richiede di completare la funzione list_new :
list* list_new(char* elems[], int n);
con i seguenti parametri:
1. elems : array di stringhe;
2. n : numero di stringhe nell’array;
La funzione deve restituire l’indirizzo di un nuovo oggetto lista contenente le stringhe in
elems , nello stesso ordine in cui appaiono nell’array.
Il codice seguente è quello che ho scritto io, sbaglio qualcosa con i puntatori secondo me ma non riesco proprio a capire come risolvere, grazie!
Qui: http://pastebin.com/UWGvfzN5
o qui sotto:
Codice: [Seleziona]
list* list_new(char* elems[], int n) {
        int i=0;
        list* new=malloc(sizeof(list));
        node* aux=new->first;
        for(i=0;i<1;i++){
                aux=malloc(sizeof(node));
                aux->elem=elems[i];
//              printf("%d\n",aux->elem);
                aux=aux->next;
        }
        return new;
}

Offline mrclick

  • Studente di Dottorato
  • ***
  • Post: 189
  • FeedBack: +15/-7
    • Mostra profilo
    • GitHub
Re:Esercizio esame su stringhe! Urgente!
« Risposta #1 il: Mar 13 Gennaio, 12:35:18 - 2015 »
Scusa ma il tipo "list" dove è definito? Poi perchè nel ciclo for esegui soltanto 1 loop (from 0 to 1)?

Offline yellow

  • Neo-Laureato
  • **
  • Post: 59
  • FeedBack: +1/-0
    • Mostra profilo
Re:Esercizio esame su stringhe! Urgente!
« Risposta #2 il: Mar 13 Gennaio, 18:50:26 - 2015 »
no vabbè, il ciclo va fino ad uno perchè stavo verificando se almeno uno melo copiava! ;D comunque ho risolto grazie! ;)
Il problema era che facevo malloc su aux e poi non facevo puntare il primo nodo della lista al nuovo aux. Poi parte del codice è sbagliata quindi l'ho fatto ricorsivo così:
Codice: [Seleziona]
node* create_list(node* nd, char* elems[], int i, int n){
if(i==n) return NULL;
node* aux=malloc(sizeof(node));
aux->elem=elems[i];
nd=aux;
nd->next=create_list(nd->next,elems,i+1,n);
return nd;
}

list* list_new(char* elems[], int n) {
// int i=0;
list* new=malloc(sizeof(list));
node* aux;
new->first=create_list(aux,elems,0,n);
return new;
}
« Ultima modifica: Mar 13 Gennaio, 18:52:52 - 2015 da yellow »