Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Trova massimo in una lista

    Ho una lista creata in questo modo:

    codice:
    typedef char stringa[N];
    typedef struct nodo * pNodo;
    struct nodo
    {
           stringa name;
           int age;
           pNodo next;
    };
    devo cercare e stampare il nome della persona più anziana, la funzione che ho fatto per trovare il massimo è questa:

    codice:
    pNodo trovaMassimo(pNodo l)
    {
              pNodo p = l->next;
              while(p != 0){
                          if(l->age < p->age) l->age = p->age;
                          p = p->next;
                          }
              return l;
    }
    ora quando vado a stampare nel main l->age mi dà l'età più grande, però se stampo l->name mi stampa sempre il primo nome che inserisco in lista, perchè?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [C++] Trova massimo in una lista

    Originariamente inviato da djanthony93
    codice:
    pNodo trovaMassimo(pNodo l)
    {
              pNodo p = l->next;
              while(p != 0){
                          if(l->age < p->age) l->age = p->age;
                          p = p->next;
                          }
              return l;
    }
    ora quando vado a stampare nel main l->age mi dà l'età più grande, però se stampo l->name mi stampa sempre il primo nome che inserisco in lista, perchè?
    Beh, stai aggiornando solo l->age.. cosa ti aspetti?

    Comunque perché controlli l'età di ciascuno con quella del primo elemento? Dovresti tenerti da una parte il puntatore all'elemento maggiore fino a quel momento...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
    pNode max(pNode l) {
      pNode ret = l;
      while(l!=NULL) {
        l = l->next;
        if(l->age > ret->age)
          ret = l;
      }
      return ret;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    codice:
    pNodo trovaMassimo(pNodo l)
    {
              pNodo p = l->next;
              while(p != 0){
                          if(l->age < p->age) l = p;
                          p = p->next;
                          }
              return l;
    }
    così funziona?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.