Delucidazione lista.

di il
16 risposte

Delucidazione lista.

Struct stud{
char nome[DIM];
char cognome[DIM];
char voto[DIM];


struct stud *next;
};
typedef struct stud *stud_p;


Nella dichiarazione di una struttura mi spiegate a cosa servono le ultime 2 istruzioni ??

16 Risposte

  • Re: Delucidazione lista.

    Nel caso mostrato la typedef serve a dare un nuovo nome ad un tipo di dato.

    Si potrà chiamare

    stud_p

    il puntatore ad una struttura stud

    struct stud *

    In pratica quando ti servirà un puntatore alla struttura, invece di scrivere

    struct stud *puntatore;

    potrai scrivere

    stud_p puntatore;

    http://it.wikipedia.org/wiki/Typede
  • Re: Delucidazione lista.

    Ma io quando devo utilizzre il puntatore utilizzo solo il p enon puntatore , come per esempio in quste funzioni:
    
                                                           
    void print_list(stud_p p)
    {
         if(p!=NULL)
         {
                    printf("\n%4s  %4s  %4s  \n\n",p->nome,p->cognome,p->voto);
                    p=p->next;
                    print_list(p);
                    }
                    }
    
     stud_p Add_to_list(stud_p head,char nome[],char cognome[],char voto[])
    {
          stud_p p;
          stud_p curr;
          
          p=(stud*)malloc(sizeof(stud));
          strcpy(p->nome,nome);
          strcpy(p->cognome,cognome);
          strcpy(p->voto,voto);
          
          p->next=NULL;
          
          if(head==NULL)
          return p;
          
          else
          {
              curr=head;
              while(curr->next!=NULL)
              curr=curr->next;
              curr->next=p;
              return head;
              }
              }              
    
    

    Come mai?? E' lo stesso giusto no ?!


    P.s e poi questa istruzione
    "struct stud *next;" dentro la struttura a cosa serve??
  • Re: Delucidazione lista.

    Daniele ... puntatore e p sono nomi di variabili ... puoi usare quello che vuoi, anche pippo ...

    Ancora non hai compreso l'uso delle variabili, dopo più di 400 messaggi nel forum C/C++??
  • Re: Delucidazione lista.

    Ah ok non avevo capito
    e l'altra istruzione invece??
  • Re: Delucidazione lista.

    Non capire che alle variabili puoi dare il nome che vuoi, a questo punto del tuo studio, è preoccupante ...

    L'altra cosa è? E' una variabile puntatore alla struttura che si chiama next e che conterrà il puntatore alla prossima struttura della lista.
  • Re: Delucidazione lista.

    Un altra cosa che proprio non riesco a capire sulla mia lista è l'istruzione p=p->next; significa che al puntatore p viene indirizzato la struttura successiva??
  • Re: Delucidazione lista.

    Significa che il puntatore next della struttura puntata da p viene assegnato al puntatore p.

    Quindi, prima il puntatore p puntava ad un elemento della lista, dopo il puntatore p punta all'elemento successivo.
  • Re: Delucidazione lista.

    E sempre a propositi della lista quando per esempio scrivo stud_p head significa che alla variabile head assegno tutta la struttura??!!
  • Re: Delucidazione lista.

    No. Come prima head è un puntatore ad una struttura. Lo chiami head perché è il puntatore alla prima struttura della lista.

    Non puoi continuare a cercare di capire questi concetti sul forum ... il forum non è una chat o un professore privato.

    Il forum serve a risolvere problemi specifici di codice.

    Per la teoria ci sono i libri e i professori.
  • Re: Delucidazione lista.

    Sto sempre cercando di capire delle cose che sul libro non ho ben capit... quindi se ho capito bene head è un puntatore alla struttura che punta alla prima struttura?!1
  • Re: Delucidazione lista.

    Un altra cosa che non ho ben capito è , per esempio quando definisco questa funzione , con tra parentesi stud_p p e poi dentro l'if utilizzo p , sigifica che sostituisco tutta la struttura con il puntatore p e svolgo quindi con p (puntatore) tutte le istruzioni e condizioni ?
    
    void print_list(stud_p p)
    {
         if(p!=NULL)
         {
                    printf("\n%4s  %4s  %4s  \n\n",p->nome,p->cognome,p->voto);
                    p=p->next;
                    print_list(p);
                    }
                    }
    
    
    
    Grazie , sei veramente molto gentile a chiarire i miei dubbi causati da uno studio affrettato!!
  • Re: Delucidazione lista.

    Qualcuno che chiarisce i miei dubbiii
  • Re: Delucidazione lista.

    Scrivere "stud_p" o "struct stud *" e' la stessa cosa ( ma meno leggibile).

    "p" e' una variabile di tipo "stud_p"

    se non conosci come si passano le variabili alle funzioni, te tocca studià!
    Lo trovi in un qualunque libro... o anche googla un po'!
  • Re: Delucidazione lista.

    Ho capito questo ciò che non riesco a capire è per esempio quando definisco questa funzione , con tra parentesi stud_p p e poi dentro l'if utilizzo p , sigifica che sostituisco tutta la struttura con il puntatore p e svolgo quindi con p (puntatore) tutte le istruzioni e condizioni ?
Devi accedere o registrarti per scrivere nel forum
16 risposte