Mi sembra apposto.Giusto ti posso fare due osservazioni:Originariamente inviato da D4rkAng3l
Ragazzi domani ho l'esame...è su carta...è un anno che non tocco liste concatenate...le avevo capite discretamente ma ora sono arruginito...
il quesito è il seguente:
dato il seguente tipo di dato:
struct nodoLista{
int dato;
struct nodoLista *nextPtr;
}
typedef nodoLista NODOLISTA;
typedef NODOLISTA *NODOLISTAPTR;
scrivere una funzione che scorre tutta la lista e restituisce il valore massimo del campo dato.
Alloraaaa...io l'ho pensato così (la sintassi sarà sbagliata perchè non l'ho fatto al pc ma su carta dopo un anno che non facevo liste...ditemi solo se la logica è èiù o meno giusta)
ha un suo senso?codice:.................. .................. struct nodoLista{ int dato; struct nodoLista *nextPtr; } typedef nodoLista NODOLISTA; typedef NODOLISTA *NODOLISTAPTR; int maximumlist(LISTNODEPTR) int main(){ .................. .................. .................. max = maximumlist(startPtr) .................. .................. .................. return 0; } int maximumlist(currentPtr){ // Riceve il puntatore al nodo corrente int max = 0; // Valore massimo int corrente; // Valore corrente if(currentPtr == NULL){ prinf("Lista vuota\n"); return NULL; // Se la lista non contiene nodi ritonra NULL al chiamante } else{ corrente = currentPtr->dato; // setta corrente con il campo dato del primo nodo while(currentPtr != NULL){ // scorri la lista fino all'ultimo nodo corrente = currentPtr->dato ; // aggiorna il valore di corrente if(corrente>massimo) // se il valore corrente è>del massimo massimo = corrente; //aggiorna il valore di massimo currentPtr=currentPtr->next; //Passa al prossimo nodo } return massimo; // Restituisci il valore di massimo al chiamante }
Grazie
Andrea
1) fai per prima cosa il controllo sulla lista vuota e in quel caso ritorna 0 non NULL (che è un valore per puntatori).
2) se la lista non è vuota max inizializzalo direttamente con il valore del primo elemento della lista invece che con zero e parti dal secondo, risparmi un'iterazione.
Ciao

Rispondi quotando