Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    82

    [c] lista cin doppi puntatori

    Ciao atutti,
    ho un problema con la lista a doppi puntatori:
    il codice è il seguente

    struct Nodo{
    int matricola;
    struct Nodo* succ;
    struct Nodo* prec;
    }
    typedef struct Nodo nodo;
    typedef nodo* lista;
    lista lis=NULL;

    Inserrimento:

    lista inserimento(lista lis, int matricola){
    nuovoElemnto=(lista)malloc(sizeof(nodo));
    nuovoElemnto->matricola=matricola;
    buovoElemnto.next->lis;
    lis=nuovoElemento;
    }

    La domada è come aggiorno il puntatore prec?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao. . . Potresti essere più chiaro quando scrivi il codice ??? Ad esempio cos' è quel buovoElemnto.next->lis ??? Lo dico per te così ti possiamo aiutare

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    magari usando i tag code o php

  4. #4
    Utente di HTML.it L'avatar di frznn
    Registrato dal
    Apr 2008
    Messaggi
    108
    lista inserimento(lista lis, int matricola){
    nuovoElemnto=(lista)malloc(sizeof(nodo));
    nuovoElemnto->matricola=matricola;
    buovoElemnto.next->lis;
    lis=nuovoElemento;
    }

    1) manca il tipo "lista" nella dichiarazione di "nuovoElemnto"
    2) buovoElemnto.next->lis suppongo debba essere nuovoElemnto->succ = lis (inserisci il nuovo nodo prima di quello puntato da lis)
    3) a questo punto a rigor di logica, ciò che c'era prima di lis adesso deve star prima di nuovoElemnto quindi devi aggiungere
    nuovoElemnto->prec = lis->prec
    4) lis = nuovoElemnto cambia il puntatore lis, ma lis è locale alla funzione (in C il passaggio è sempre per valore). se vuoi cambiare il puntatore lis esterno devi usare un doppio puntatore: lista * lis. naturalmente per usare lis dovrai dereferenziarlo (*lis)

    Il codice dovrebbe essere questo:
    codice:
    lista inserimento(lista lis, int matricola){
    nuovoElemnto=(lista)malloc(sizeof(nodo));
    nuovoElemnto->matricola=matricola;
    nuovoElemnto->succ = *lis;
    nuovoElemnto->prec = (*lis)->prec;
    *lis=nuovoElemento;
    }
    *** Rock n' Roll ain't noise pollution ***

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.