Ver Mensaje Individual
  #12 (permalink)  
Antiguo 28/05/2006, 05:42
kllb
 
Fecha de Ingreso: abril-2005
Mensajes: 8
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola!, os envio un programita con lista simple el problema que me daba era al insertar el registro no se que pasa que me da violación del segmento, no creo que tenga importancia pero lo he programado en linux, con el editor emacs y el compilador gcc, lo digo por lo de reservar memoria que es más corto y no he de poner tipo* delante en lo del malloc, bueno aqui os lo dejo:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define NUM_CONTROLES 9
#define MAXLON 30

struct Registro
{
int dorsal;
int num_control;
float tiempo_paso;
};
typedef struct Registro TipoRegistro;

struct Nodo
{
TipoRegistro info;
int dorsal;
float tiempos[NUM_CONTROLES];
struct Nodo *sig;
};
typedef struct Nodo TipoNodo;

struct Lista
{
TipoNodo *primero;
TipoNodo *ultimo;
int num;
};
typedef struct Lista TipoLista;

void LeerNodoCorredor( TipoNodo *n );
void CrearListaVacia( TipoLista *l );
void LeerCorredor( TipoRegistro *c);
void InsPorCola ( TipoLista *l, TipoNodo a );
void MostrarCorredor( TipoNodo c , TipoLista l);
void LeerNodoCorredor( TipoNodo *n );

int main( void )
{
TipoLista lista;
// TipoRegistro unCorredor; lo usare cuando me funcione
TipoNodo unNodoCorredor;
LeerNodoCorredor( &unNodoCorredor );

InsPorCola( &lista, unNodoCorredor );
//MostrarCorredor( unNodoCorredor ); lo arreglare cuando funcione InsPorCola



return 0;
}

void CrearListaVacia( TipoLista *l )
{
l->primero = NULL;
l->ultimo = NULL;
l->num = 0;

}

void LeerCorredor( TipoRegistro *c)
{
c->dorsal=1;
c->num_control = 7;
c->tiempo_paso = 2.0;

}

void LeerNodoCorredor( TipoNodo *n )

{
LeerCorredor(&n->info);
n->dorsal = 1;
n->tiempos[0]=2.0;

}

void InsPorCola ( TipoLista *l, TipoNodo a )
{
TipoNodo *nuevo;

nuevo = malloc( sizeof(TipoNodo) );

nuevo->info = a.info;
nuevo->dorsal = a.dorsal;
nuevo->tiempos[l->num] = a.info.tiempo_paso;
nuevo->sig = NULL;


if(l->ultimo==NULL)
{
l->primero = nuevo;
l->ultimo = nuevo;
}
else
{
l->ultimo->sig = nuevo;
l->ultimo = nuevo;
}
l->num++;
}

void MostrarCorredor( TipoNodo c , TipoLista l)
{

printf("%d ",c.dorsal);
printf("%d ",c.info.num_control);
printf("%f ",c.tiempo_paso[l.num]);

}

Última edición por kllb; 28/05/2006 a las 09:57