Nippolo ha scritto:
idiotafsandwich ha scritto:
Eccolo qua, chiedo venia per il ritardo ma ero fuori casa ^-^
Figurati, cmq gli ho dato un'occhiata:
- innanzitutto io eviterei il secondo typedef, secondo me non porta alcuna semplificazione, anzi...
- evita di usare variabili globali;
- nella creazione della lista lo 0 deve far parte della lista o no? Chiedo perchè nella funzione crea_lista() se si inserisce 0 come primo valore esso non andrà a far parte della lista, mentre se si inserisce 0 successivamente invece sì;
- a mio parere in un esercizio sulle liste non possono mancare delle funzioni che aggiungono un elemento in testa o in coda alla lista. Ti suggerisco quindi di implementare queste due funzioni e sostituire crea_lista() (che peraltro presenta del codice abbastanza ridondante) con qualcosa del genere:
int main()
{
int n;
elem_lista *testa = NULL;
while(n = chiedi_valore())
{
testa = aggiungi_in_coda(testa, n);
//o ancora meglio:
//aggiungi_in_coda(&testa, n);
}
...
- se rifletti sul passaggio di argomenti ad una funzione, ti renderai conto che la variabile p nella funzione stampa_lista() è superflua;
- infine la funzione cerca_elemento() può essere semplificata notevolmente. Per esempio io farei qualcosa del genere:
int cerca_elemento(nodo *head, int x)
{
int i = 1;
while(head && head->info != x)
{
head = head->next;
++i;
}
return i * (head != NULL);
}
uh, dunque, in ordine:
- mi sono resa conto anche io che il secondo typedef non mi cambia la vita, continuo a usarlo solo per seguire quello che ci ha detto il professore
- riguardo la testa come variabile globale, ultimamente la sto dichiarando come tale solo per abituarmi a questa situazione, che è quella che capita più di frequente nei temi d'esame del mio prof, so che non cambia molto, ma mi abituo a vederla scritta così XD
- se lo 0 dovesse fare parte o meno della lista non lo avevo considerato sinceramente, grazie per avermelo fatto notare! Credo di volerlo escludere, il testo non lo specificava, dovrò pensare a come modificare quella parte
- le funzioni AggiungiInCoda e AggiungiInTesta le conosco, le posso inserire facilmente, questo programma l'ho scritto semplicemente per provare quella specifica funzione
- grazie per il suggerimento su come sostituire Crea_lista, in effetti è molto più snello così! Vorrei chiederti però perchè dici che sarebbe meglio passare la testa per indirizzo. Sono ancora alle prime armi con la programmazione e a volte mi impiccio non poco con queste cose -.-
-anche questa volta, riguardo la variabile p in stampa_lista, sto seguendo le indicazioni del professore, ma sinceramente non saprei come dovrei fare se volessi eliminarla
Grazie per le dritte in generale, mi è di grande aiuto parlarne con chi ne capisce più di me ^-^