28/05/2006, 05:42
|
| | 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 |