Estructuras de datos

Solo disponible en BuenasTareas
  • Páginas : 5 (1063 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de marzo de 2011
Leer documento completo
Vista previa del texto
C8
ESTRUCTURAS DE DATOS

Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid

Índice
1. Introducción 2. Definición 3. Declaración e inicialización 4. Acceso a los miembros 5. Uso de typedef 6. Estructuras y funciones

Introducción
Una estructura es un tipo de dato definido por el usuario compuesto por una colección de variablesrelacionadas entre sí y englobadas baja un único nombre
  

Las variables pueden ser de diferentes tipos de datos, incluidas otras estructuras. Suelen usarse para definir fichas para bases de datos, englobando en una única variable datos de personas, libros, coches, etc. Combinadas con punteros permiten la creación de estructuras complejas de datos, tales como listas enlazadas, árboles,pilas, colas, etc.

Son útiles para organizar los datos del programa porque permiten tratar datos relacionados como una unidad (como una variable).

Definición
Una nueva variable tipo estructura debe ser definida especificando los campos que la componen:
struct etiqueta { tipo1 campo1; tipo2 campo2; ... tipoN campoN; };
 

struct introduce la definición de la estructura etiqueta etiquetaes el nombre de la estructura y será usado para declarar las variables de este tipo (análogamente a int, float, etc.)



campo1, ..., campoN son los miembros o campos de
la estructura

Definición
Una estructura no puede tenerse a si misma como miembro Sí puede contener un miembro que es un puntero a una estructura del mismo tipo

La definición de una estructura no reserva espacio enmemoria, sólo crea un nuevo tipo de dato que puede ser usado para declarar variables de ese tipo de dato

Declaración e inicialización
• Método 1: Se define la estructura (quizás en un archivo de cabecera)
struct fecha { int dia; int mes; int anho; char nom_mes[20]; };

y luego se declaran las variables
struct fecha { int dia; int mes; int anho; char nom_mes[20]; }hoy,manhana; struct { intdia; int mes; int anho; char nom_mes[20]; }hoy,manhana;

struct fecha hoy,manhana;

• Método 2: Se define la estructura y declaran las variables a la vez

• Método 3: Se declaran las variables sin definir la estructura

Declaración e inicialización
La inicialización es similar a la de los vectores:
struct fecha { int dia; int mes; int anho; char nom_mes[20]; }; ... struct fechahoy={10,1,1971,"Enero"}; struct fecha ayer; ayer={10,9,1971,"Enero"};

Acceso a los miembros
Mediante el operador punto:
hoy.dia=7; strcpy(hoy.nom_mes,"Julio"); maniana.dia=hoy.dia+1;

Mediante el operador flecha si la variable es un puntero:
struct fecha *p_hoy; … p_hoy=&ayer; … p_hoy->dia=8;

p_hoy->dia es equivalente a (*p_hoy).dia ¡*p_hoy.dia es incorrecto!

Operaciones con estructuras•Operaciones válidas con estructuras:



   

Asignar una estructura a otra del mismo tipo Obtener la dirección (&) de la estructura Crear variables puntero a estructura Acceder a los miembros de la estructura Usar el operador sizeof para determinar el tamaño de la estructura Una función puede devolver una variable tipo estructura

•Operaciones no válidas con estructuras:


¡Nopueden compararse!

Uso de typedef
typedef crea sinónimos (alias) de datos definidos previamente.
typedef struct fecha { int dia; int mes; int anio; char nom_mes[20]; }FECHA; … struct fecha ayer; FECHA hoy; typedef no crea un nuevo tipo de dato, sino un nuevo nombre
para un tipo de dato ya existente En el ejemplo anterior es como decirle al compilador: "Cada vez que encuentres FECHA interprétalocomo struct fecha"

Estructuras y funciones
Su uso es equivalente al de cualquier otra variable.


Podemos pasar la estructura completa o alguno de sus miembros, mediante paso por valor: void mifuncion(struct fecha,int,…); … main() { … mifuncion(hoy,ayer.dia,…); } Podemos pasar la dirección de la estructura o de cualquiera de sus miembros: void mifuncion(struct fecha *,int*,…); …...
tracking img