|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
[C] urgentissimo altra domandina sulle liste
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) 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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2002
Città: Bologna
Messaggi: 483
|
si quello che hai scritto ha un senso ma secondo me ci sono vari errori di sintassi..ad esempio nella funzione fai restituire NULL se la lista è vuota, ma dato che l'argomento di uscita è un int secondo me il compilatore ti da errore...al massimo metti un int * e restituisci un puntatore..poi nel caso la lista sia composta da più di un elemento, alla prima iterazione fai due volte l'assegnazione corrente = currentPtr->dato ;....
__________________
Acer TravelMate 8103Wlmi |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:32.



















