PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Estructura de Datos ICI - 241 Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.1 - Introducción Un estructura de datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ellas. Las estructuras de datos se utilizan, generalmente, para procesar una colección de valores que están relacionados entre sí por algún método. Por ejemplo: una lista de notas, una serie de puntajes de un concurso o una lista de temperaturas medidas a lo largo de un período de tiempo. Las estructuras de datos básicas que soportan la mayoría de los lenguajes de programación son los estructuras estáticas. Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos 1 PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2 – Estructuras estáticas Una estructura de datos estática es aquella en la que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa. Entre las estructuras de datos estáticas se encuentran los arrays (vectores y matrices), registros, archivos y cadenas. 1.2.1 – Arrays unidimensionales (Vectores) Un array es un conjunto finito y ordenado de elementos homogéneos Cada elemento puede ser identificado Son del mismo tipo de datos El array unidimensional o vector es el tipo de array más simple. notas[0] notas[1] notas[2] notas[3] ............................ notas[n] Subíndice designa la posición del elemento en el vector Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.1 – Arrays unidimensionales (Vectores) Las operaciones que se pueden realizar con vectores son: asignación, lectura, escritura, recorrido, actualización(añadir, borrar, insertar), ordenación, búsqueda . La notación algorítmica que utilizaremos es la siguiente: Array [dimensiones] de <tipo de dato> : <nombre del array> Array[0..100] de entero : numero int numero[100]; Asignación: <nombre del array> [subindice] <- <valor> numero[0] <- 5 numero[0] = 5; desde i = 1 hasta 5 hacer For (i=1; i<=5; i++){ numero[i] <- 8 fin_desde Desarrollado por Ricardo Soto De Giorgis numero[i]=8; } Escuela de Ingeniería Informática ICI 241 – Estructura de Datos 2 PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.1 – Arrays unidimensionales (Vectores) Lectura: leer (<nombre del array>[subindice]) leer (numero[0]) scanf(“%d”, &numero[0]); Escritura: escribir (<nombre del array>)[subindice]) escribir (“el número es: ”numero[0]); printf (“el número es: %d”, numero[0]); Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO ICI 241 – Estructura de Datos Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.1 – Arrays unidimensionales (Vectores) Inserción: /* Se desea insertar nuevo_elemento en la posición p */ /* i corresponde al índice del último elemento*/ mientras (i >= p) hacer autos[i+1]<-autos[i] i <- i-1 fin_mientras autos[p]<- nuevo_elemento while (i >= p){ autos[i+1]=autos[i]; i=i--; } autos[p]= nuevo_elemento; Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos 3 PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.1 – Arrays unidimensionales (Vectores) eliminar: /* Se desea eliminar elemento en la posición j */ /* n corresponde al índice del último elemento*/ desde (i <- j) hasta n-1 hacer autos[i]<-autos[i+1] fin_desde for (i = j;i<=n-1;i++){ autos[i]=autos[i+1]; } Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.2 – Arrays bidimensionales(Matrices) Un array bidimensional se puede considerar como un vector de vectores. Es por consiguiente un conjunto de elementos homogéneos y ordenados en el que se necesita especificar dos subíndices para poder identificar cada elemento del array. Fila 1 notas[0,0] notas[0,1] .............. notas[1,0] notas[1,1] ............ notas[1,j] notas[2,0] notas[2,1] ............. notas[2,j] Fila 2 notas[0,j] ............. ............. notas[i,0] notas[i,1] .............. notas[i,j] Fila i Columna 1 Desarrollado por Ricardo Soto De Giorgis Columna 2 Escuela de Ingeniería Informática Columna j ICI 241 – Estructura de Datos 4 PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.2 – Arrays bidimensionales(Matrices) Las operaciones que se pueden realizar con matrices son: asignación, lectura, escritura, recorrido, actualización(añadir, borrar, insertar), ordenación, búsqueda. La notación algorítmica que utilizaremos es la siguiente: Array[dimension fila, dimension columna] de <tipo de dato>:<nombre del array> Array[0..100,0..50] de entero:numero int numero[100][50]; Asignación: <nombre del array> [subindice fila,subindice columna] <- <valor> numero[0,0] <- 5 numero[0][0] = 5; desde i = 1 hasta 5 hacer For (i=1; i<=5; i++){ desde j = 1 hasta 5 hacer For (j=1; j<=5; j++){ numero[i,j] <- 8 numero[i][j]=8; fin_desde } fin_desde Desarrollado por Ricardo Soto De Giorgis } Escuela de Ingeniería Informática PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO ICI 241 – Estructura de Datos Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.2 – Arrays bidimensionales(Matrices) Lectura: leer (<nombre del array>[subindice fila, subindice columna]) leer (numero[0,0]) scanf(“%d”, &numero[0][0]); Escritura: escribir (<nombre del array>)[subindice fila, subindice columna]) escribir (“el número es: ”numero[0,0]); printf (“el número es: %d”, numero[0][0]); Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos 5 PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.3 – Arrays multidimensionales Curso Un array puede ser definido de tres dimensiones, cuatro dimensiones, hasta de n-dimensiones. En general, un array de n-dimensiones requiere que los valores de los n-subíndices puedan ser especificados a fin de identificar un elemento individual del array. ra re ar C Sexo Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.3 – Arrays multidimensionales Las operaciones que se pueden realizar con matrices son: asignación, lectura, escritura, recorrido, actualización(añadir, borrar, insertar), ordenación, búsqueda. La notación algorítmica que utilizaremos es la siguiente: Array[dimension i, dimension j,... dimension n] de <tipo de dato>:<nombre del array> Array[0..100,0..50,0...20] de entero:numero int numero[100][50][20]; Lectura: leer (<nombre del array>[subindice i, subindice j,... subindice n]) leer (numero[0,0,0]) scanf(“%d”, &numero[0][0][0]); Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos 6