Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Comprensión código de lista (typedef, struct)

Estas en el tema de Comprensión código de lista (typedef, struct) en el foro de C/C++ en Foros del Web. Hola a todos tengo una duda, no entiendo bien el siguiente codigo: Código: typedef struct El { int dato; struct El *next; } ELEMENT; typedef ...
  #1 (permalink)  
Antiguo 13/01/2015, 17:56
 
Fecha de Ingreso: enero-2015
Mensajes: 14
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Comprensión código de lista (typedef, struct)

Hola a todos tengo una duda, no entiendo bien el siguiente codigo:

Código:
typedef struct El {
    
    int dato;
    struct El *next;
    
} ELEMENT;

typedef ELEMENT * List;
a lo que entendí typedef se usa para crear estructuras con un sobrenombre (un nombre mas corto) en este caso la estructura seria una lista (creo que la linea "struct El *next;" hace que se repita la misma estructura al infinito una dentro la otra) y la ultima linea no la entiendo bien, parece que crea un puntero de tipo ELEMENT que seria la lista.

Estoy en lo correcto? me podrían explicar lo que hace?

Gracias de antemano

Saludos
  #2 (permalink)  
Antiguo 13/01/2015, 19:15
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Comprensión código de lista (typedef, struct)

En realidad typedef quiere decir definición de un nuevo tipo. Y no solo acorta nombres de estructuras, si no que crea nuevos tipos como lo son int, char, etc.. etc... Eso hace que ya no tengas que poner struct delante al crear objetos, punteros, etc de esta estructura.

por ejemplo:
typedef int Tabla[100] ;

Tabla t1; //cada vez que hago eso creo una tabla de 100 enteros XD

t1[0] = 0;
t1[99] = 100;

Lo del: typedef ELEMENT * List, sirve para crear punteros de esta forma:

List punteroLista; //esto es un puntero a ELEMENT creado con el typedef(Es un nuevo tipo de datos).

Luego puedes crear objetos dinamicamente del tipo ELEMENT y hacer que punteroLista los apunte de esta forma:

ELEMENT *Nodo = (ELEMENT*)calloc( 1, sizeof( ELEMENT ) );

punteroLista = Nodo;

Última edición por vangodp; 13/01/2015 a las 19:22
  #3 (permalink)  
Antiguo 13/01/2015, 19:25
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Comprensión código de lista (typedef, struct)

el typedef puede ser util para definir un tipo de datos es decir asignarle un alias del tipo de dato.en tu caso estas creando un nuevo tipo de ELEMENT que parte o inicia de una estructura

y las estructuras nos permiten agrupar varios datos, que mantengan algún tipo de relación, aunque sean de distinto tipo

se crean de la siguiente forma el typedef es para darle un alias valga la redundancia
Código C++:
Ver original
  1. struct nombre_estructura{
  2. tipo_dato variable...
  3. };
  #4 (permalink)  
Antiguo 13/01/2015, 19:36
 
Fecha de Ingreso: enero-2015
Mensajes: 14
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Comprensión código de lista (typedef, struct)

Cita:
Iniciado por vangodp Ver Mensaje
En realidad typedef quiere decir definición de un nuevo tipo. Y no solo acorta nombres de estructuras, si no que crea nuevos tipos como lo son int, char, etc.. etc... Eso hace que ya no tengas que poner struct delante al crear objetos, punteros, etc de esta estructura.

por ejemplo:
typedef int Tabla[100] ;

Tabla t1; //cada vez que hago eso creo una tabla de 100 enteros XD

t1[0] = 0;
t1[99] = 100;

Lo del: typedef ELEMENT * List, sirve para crear punteros de esta forma:

List punteroLista; //esto es un puntero a ELEMENT creado con el typedef(Es un nuevo tipo de datos).

Luego puedes crear objetos dinamicamente del tipo ELEMENT y hacer que punteroLista los apunte de esta forma:

ELEMENT *Nodo = (ELEMENT*)calloc( 1, sizeof( ELEMENT ) );

punteroLista = Nodo;
Muchas gracias por la explicación!! Ahora comprendo la utilidad de typedef.
Una pregunta mas sabes como puedo crear una lista llena de ejemplo?

algo asi:
ELEMENT prueba = {1, "2, NULL" };

no se como se hacen

Gracias de antemano

Saludos
  #5 (permalink)  
Antiguo 13/01/2015, 19:44
 
Fecha de Ingreso: enero-2015
Mensajes: 14
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Comprensión código de lista (typedef, struct)

Gracias por la ayuda @NelsonJPG
  #6 (permalink)  
Antiguo 13/01/2015, 20:00
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Comprensión código de lista (typedef, struct)

En esta pagina se describe ejemplos para la creación de Listas de varios tipos. Circulares, abiertas(simples), doblemente enlazadas etc etc: http://www.c.conclase.net/edd/
En el final de cada explicación se encuentra el código completo de los ejemplos.
Un ejemplo de source lista simples es esta: http://www.c.conclase.net/edd/?cap=001h#1_11_1

La explicación esta aquí: http://www.c.conclase.net/edd/?cap=001#inicio

Suerte ;)
  #7 (permalink)  
Antiguo 13/01/2015, 20:06
 
Fecha de Ingreso: enero-2015
Mensajes: 14
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Comprensión código de lista (typedef, struct)

Muchísimas Gracias!! no conocía esas paginas!!
Ahora me pongo a estudiar

Saludos
  #8 (permalink)  
Antiguo 13/01/2015, 20:26
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Comprensión código de lista (typedef, struct)

Cita:
Iniciado por Rufux Ver Mensaje
Muchísimas Gracias!! no conocía esas paginas!!
Ahora me pongo a estudiar

Saludos
Cuando cite: http://www.c.conclase.net/edd/?cap=001h#1_11_1
Queria decir: http://www.c.conclase.net/edd/?cap=001f#1_9_3

...Ya que el código que te pase era C++, pero muy lejo no andará los ejemplos de C ya que tienen para ambos lenguajes XD

Suerte!

PD: Aquí los tienes todos : http://www.c.conclase.net/edd/index....jemplos#inicio

Última edición por vangodp; 13/01/2015 a las 20:43

Etiquetas: estructura, lista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:24.