Page 525 - Informatica dalla A a Z
P. 525

/* inserimento in coda (ricorsivo) */
              void InserisciInCodaR(Lista *lp, ElmLista *elp) {


                  if (*lp == NULL) {
                          *lp = elp;   /* fine della lista */
                          elp->next = NULL;
                  }
                  else {
                          InserisciInCodaR(&(*lp)->next, elp);
                  }


              }


              /* inserimento in ordine (si suppone la lista in ordine cre-
              scente) */
              void InserisciInOrdine(Lista *lp, ElmLista *elp) {
                  ElmLista *elementoCorrente, *elementoPrecedente;

                  elementoCorrente = *lp;
                  elementoPrecedente = NULL;
                  while (elementoCorrente != NULL &&
                  elementoCorrente->Info < elp->Info) {
                          elementoPrecedente = elementoCorrente;
                          elementoCorrente = elementoCorrente->next;
                  }
              }
              elp->next = elementoCorrente;
              if (elementoPrecedente != NULL)
                  elementoPrecedente->next = elp; /* caso di lista non vuota
              */
              else *lp = elp;
              }


              /* il primo elemento (se esiste) viene tolto e ritornato il pun-
              tatore */
              ElmLista *TogliDaTesta(Lista *lp) {
                  ElmLista *elementoCorrente;
                  elementoCorrente = *lp;
                  if (elementoCorrente != NULL)
                    *lp = elementoCorrente->next;
                    return elementoCorrente;

              }


                                                            521
   520   521   522   523   524   525   526   527   528   529   530