klarence
29-05-2008, 17:27
Premetto che NON scrivo per ottenere la soluzione dell'esercizio, non mi servirebbe a niente.
Sia data la struttura typedef struct elemento {int lung; char *stringa; struct elemento*next} lista;, che rappresenta un elemento di una lista di stringhe, dove il campo intero lung rappresenta la lunghezza della stringa (escluso il carattere di terminazione). Si scriva una funzione lista *trasponiNonOrdinato(lista *lis); che, dato il puntatore lis al primo elemento della lista, restituisca una nuova lista dello stesso tipo, dove la i-esima stringa della nuova lista `e ottenuta concatenando l’elemento i-esimo delle stringhe in lis, quando presente. Ad esempio, se le stringhe puntate da lis sono {solam, proroe, poi, mihon, ab}, la lista risultante dovrà contenere le stringhe {sppma, oroib, loih, aro, mon, e}, e le rispettive lunghezze (escluso il carattere di
terminazione).
Questo è l'esercizio.
So sicuramente che la lista che devo restituire conterrà un numero di stringhe pari alla lunghezza della stringa che avrà il campo 'lung' maggiore. La mia difficoltà ora è questa: siccome devo creare una nuova lista che conterrà le stringhe che devo comporre come la traccia mi dice, come faccio a creare questa nuova lista (dove ci devo mettere le nuove stringhe ) e a creare il puntatore al primo elemento della lista?
Lo so che per voi sembrerà una cosa facile, ma non ho mai lavorato con le strutture quindi sono in difficoltà. Grazie a chi mi aiuterà.
Sia data la struttura typedef struct elemento {int lung; char *stringa; struct elemento*next} lista;, che rappresenta un elemento di una lista di stringhe, dove il campo intero lung rappresenta la lunghezza della stringa (escluso il carattere di terminazione). Si scriva una funzione lista *trasponiNonOrdinato(lista *lis); che, dato il puntatore lis al primo elemento della lista, restituisca una nuova lista dello stesso tipo, dove la i-esima stringa della nuova lista `e ottenuta concatenando l’elemento i-esimo delle stringhe in lis, quando presente. Ad esempio, se le stringhe puntate da lis sono {solam, proroe, poi, mihon, ab}, la lista risultante dovrà contenere le stringhe {sppma, oroib, loih, aro, mon, e}, e le rispettive lunghezze (escluso il carattere di
terminazione).
Questo è l'esercizio.
So sicuramente che la lista che devo restituire conterrà un numero di stringhe pari alla lunghezza della stringa che avrà il campo 'lung' maggiore. La mia difficoltà ora è questa: siccome devo creare una nuova lista che conterrà le stringhe che devo comporre come la traccia mi dice, come faccio a creare questa nuova lista (dove ci devo mettere le nuove stringhe ) e a creare il puntatore al primo elemento della lista?
Lo so che per voi sembrerà una cosa facile, ma non ho mai lavorato con le strutture quindi sono in difficoltà. Grazie a chi mi aiuterà.