Ciao, un amico per insegnaermi i puntatori mi ha mandato questo codice:

codice:
#include <iostream.h>
#include <stdlib.h>

// Description: Gestione di una lista di interi
struct el
   { int inf;
     el *pun; 
   };
   
el *crealista(int n);
el *estrai(el *&p);
void accoda(el *&p); 

int main()
{
  el *p0, *p;
  int k;
  cout<<"Con quanti elementi vuoi inizializzare la lista? ";
  cin>>k;
  p0=crealista(k);
  for (p=p0; p!=0; p=p->pun) cout<<p->inf<<"\t";   // visualizzo gli elementi
  cout<<endl;                                                     
  system("PAUSE");
  if (p0 !=0) 
    {
        accoda(p0);    // aggiunge un elemento in coda alla lista
        p0=estrai(p0);   //elimino l'elemento in testa alla lista
        for (p=p0; p!=0; p=p->pun) cout<<p->inf<<"\t";
        system("PAUSE");  
    } 
    else cout<<"hai creato una lista vuota\n";
  return 0; 
};

el *crealista(int n)
 {
   el *p, *p0=0;
   int i;
   for (i=1; i<=n; i++)
    {  p=new el;
       cin>>p->inf;
       p->pun=p0;
       p0=p;
    }
  return p0;
};

el *estrai(el *&p)
 {
   el *pp;
   pp= p->pun;
   delete p;
   return pp;
};

void accoda(el *&p)
 {
   el *np, *pp;
   for (pp=p; pp->pun!=0; pp=pp->pun);
   np=new el;
   cin>>np->inf;
   np->pun=0;
   pp->pun=np;
   pp= p->pun;
};
Solamente non somno ben riuscito a capire che cosa faccia...

struct el
{ int inf;
el *pun; // Non capisco
};

el *crealista(int n); // Non capisco
el *estrai(el *&p); // Non capisco

Questi sono i pezzi principali che non ho capito, e non capendo questi, anche il resto non posso saperlo...


Qualcuno puo aiutarmi?