Tipos Abstractos de datos en C

chava
31 de Octubre del 2005
Hola!

Tengo que programar un tipo abstracto de datos en C, partiendo prácticamente desde cero porque hasta ahora sólo hbía programado en Ada (que está bastante mejor para Tads que C, según parece).
La cuestión es que no sé como hacerlo exactamente, tengo los tipos y funciones definidos en el .c, pero no se exactamente qué poner en el .h aparte de las cabeceras de funciones y tal...

Si tienen algún codigo que me sirva de ejemplo para continuar o alguna ayuda, se lo agradeceré mucho.

mi email: [email protected]
Muchas gracias de antemano

chava
31 de Octubre del 2005
El codigo del . c es más o menos así (no creo que esté bien y faltan funciones, pero bueno):

/* Definición del TAD Cartas */

#include<stdio.h>
#include<stdlib.h>
#include "CARTA.H"

#define maxnumcartas 42;
#define maxcodpais 40;

typedef enum tpUnidad {inf,cab,art};
typedef struct tpCarta{
char nombrePais [30];
tpUnidad unidad;
int codigoPais;
int estacogida;
int comodin;
int esultima;
struct tpCarta * sig;
};
typedef tpCarta tpVectorCartas[42];
typedef tpCarta *pilaCartas;



void cargaVector (char *nombre_fichero, tpVectorCartas vectorCartas)
{
char elnombre[30] ;
tpUnidad launidad;
int elcodigo,escomodin,i,j;
tpCarta lacarta;

FILE *pf = fopen ("paises.txt", "r");
if (pf == NULL) /* siempre se debe hacer esta comprobación*/
{
printf ("No se puede abrir fichero de países");
exit (1);
}
i=0;
while (!feof(pf))
{
i++;
fscanf (pf,"%s ",elnombre);
fread(&launidad,sizeof(launidad),1,pf);
fscanf (pf,"%d %d",elcodigo,escomodin);
for (j=0;j<31;j++){
lacarta.nombrePais[j]=elnombre[j];
}
lacarta.unidad=launidad;
lacarta.codigoPais=elcodigo;
lacarta.comodin=escomodin;
vectorCartas[i]=lacarta;
}
fclose(pf);
}