Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Guarda che effettivamente si chiama lista.

    Comunque N non serve come parametro. Per la cancellazione di un elemento:

    • Il primo elemento è un caso speciale
    • Dopo ti basta fare
      codice:
      struct elemento *tmp;
      if(check(lista->next->value)) {
        tmp = lista->next;
        lista->next = list->next->next;
        free(tmp);
      }



    Ovviamente questo è solo pseudocodice, il resto fallo tu...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  2. #2
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Guarda che effettivamente si chiama lista.

    Comunque N non serve come parametro. Per la cancellazione di un elemento:

    • Il primo elemento è un caso speciale
    • Dopo ti basta fare
      codice:
      struct elemento *tmp;
      if(check(lista->next->value)) {
        tmp = lista->next;
        lista->next = list->next->next;
        free(tmp);
      }



    Ovviamente questo è solo pseudocodice, il resto fallo tu...
    Ok, il procedimento l'ho capito, mi resta oscuro solo quel "check" dello pseudocodice, cosa intendi con ciò?

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Un controllo, nel tuo caso se value supera la soglia.
    Ho scritto check perché quel codice è generico, puoi sostituirlo con quello che vuoi
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Un controllo, nel tuo caso se value supera la soglia.
    Ho scritto check perché quel codice è generico, puoi sostituirlo con quello che vuoi
    Ok grazie, un ultimo chiarimento, se possibile.
    Dal momento che in ingresso ho dato un doppio puntatore alla struttura, dato che la devo modificare (avendola inizializzata nel main) a tmp devo assegnare lista->next in questo modo
    codice:
    tmp = (*lista)->next
    mentre per assegnare a lista->next la lista->next->next dovrei fare
    codice:
    (*lista)->next = ((*lista)->next)->next
    ?
    Perchè mi sono sempre intrecciato su queste cose...

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Sì, comunque dato che dopo aver gestito il primo elemento a parte non hai più bisogno di accedere al main potresti anche fare una cosa del genere per comodità
    codice:
    //gestione primo elemento
    struct elemento *l = *lista;
    //gestione altri elementi usando l
    struct elemento *tmp;
    if(check(l->next->value)) {
      tmp = l->next;
      l->next = l->next->next;
      free(tmp);
    }
    Così semplifichi di molto il codice
    Ah, ovviamente qui manca il ciclo esterno...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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 © 2025 vBulletin Solutions, Inc. All rights reserved.