Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] Liste concatenate

  1. #1

    [ C ] Liste concatenate

    Ciao a tutti

    Sto studiando il C.
    Sul libro (Deitel) sono arrivato alle strutture.
    C'è una parte di codice che non capisco e che inserisco di seguito.
    LISTNODEPTR come deve essere usato? E' un puntatore a un tipo di dato? Se qualcuno mi può aiutare...

    /* Operating and maintaining a list */
    #include <stdio.h>
    #include <stdlib.h>

    struct listNode { /* self-referential structure */
    char data;
    struct listNode *nextPtr;
    };

    typedef struct listNode LISTNODE;
    typedef LISTNODE *LISTNODEPTR;

    void insert(LISTNODEPTR *, char);
    char delete(LISTNODEPTR *, char);
    int isEmpty(LISTNODEPTR);
    void printList(LISTNODEPTR);
    void instructions(void);

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    Il linguaggio di programmazione va indicato anche nel titolo della discussione, come da Regolamento.

    Questo titolo lo modifico io, ma tu stai più attento in futuro.

    Ciao!

    Errata corrige:
    ho visto che hai corretto tu... ok.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Si me ne sono accorto e l'ho subito modificato.

    Ciao

  4. #4
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    è un puntatore alla struttura

    detesto i typedef... preferisco di gran lunga che uno mi scriva struct ciccio *p cosi si capisce sempre cosa ho davanti
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  5. #5
    Ma nei prototipi come ad esempio:

    void insert(LISTNODEPTR *, char);

    prima di LISTNODEPTR non si mette l'asterisco?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    117
    LISTNODEPTR è stato dichiarato come un tipo puntatore... quindi già di per se senza asterisco è un puntatore.

    Nelle funzioni dove dopo c'è l'asterisco

    insert(LISTNODEPTR *,...)

    è perchè il puntatore alla testa della lista potrebbe cambiare, quindi si deve passare il puntatore al puntatore, per permettere che venga modificato. (In C si passa solo per valore, per simulare il passaggio per indirizzo si passa il puntatore)

  7. #7
    Gazie a tutti per l'aiuto

    Ma non esiste un modo più chiaro per fare la stessa cosa?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    117
    potresti fare una funzione che restituisce un tipo lista... in modo da nn dover passare la lista con un puntatore a puntatore... ma solo la testa della lista

    quindi una cosa così:

    L = insert(L,c)

    dove L è la lista da modificare e c è il char da inserire...

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.