Ciao...Qualcuno sa speigarmi che cosa fa questo programma che ha fatto un mio professore e che a mio parere non va neanche?
codice:
#include <stdio.h>
#include <stdlib.h>
#define DIM  6
#define DIMT 7
typedef struct {long key; 
                char qc[9]; 
                long link; } ELE;
typedef ELE VET[DIMT];

ELE elPos(VET X, int pos, ELE dum)
 {
     if(pos != -2)
      return X[pos];
     else
      return dum; 
 }

void Scrivi(VET X, ELE el, int pos, ELE *dm)
{
     if (pos != -2)
       X[pos] = el;
     else
       *dm = el;  
 }


long RMERGE (VET X, long Sx, long Dx)
{  long i,j,z,d;
   ELE dum, ELi, ELj, ELz;
   
   d = -2; dum.link=-1;
   i = Sx; j = Dx; z = d;
   while (i != -1 && j != -1)
     { ELi = elPos(X,i,dum); ELj = elPos(X,j,dum);
     
       if(ELi.key <= ELj.key)
       { ELz = elPos(X,z,dum);
         ELz.link = i;  Scrivi(X, ELz, z, &dum); 
         z=i; i=ELi.link;}
       else 
       { ELz = elPos(X,z,dum);
         ELz.link = j; Scrivi(X, ELz, z, &dum); 
         z=j; j=ELj.link;}
     }
     
  if (i==-1)  ELz.link = j;
  else   ELz.link = i;
  Scrivi(X, ELz, z,&dum);
  return dum.link;
}


long RMSORT (VET X,long l,long u)
{  long meta,Sx, Dx,P;

   if (l >= u )  P = l;
   else { meta = (l+u)/2;
           Sx = RMSORT(X,l,meta);
           Dx = RMSORT(X,meta+1,u);
           P =  RMERGE(X,Sx,Dx);}
   return P;
}

int main()
{
    VET v={{8,"",-1},{16,"",-1},{-3,"",-1},
           {36,"",-1}, {27,"",-1},{36,"",-1}};
    long testa,i;
    
    testa = RMSORT(v,0,DIM-1);
    
    for(i=testa; i!=-1; )
      {
       printf("K=%ld L=%ld\n",v[i].key, v[i].link);
       i = v[i].link;
      }
    system("pause");return 0;       
}