resol y listas definitivas aspirant admitidos y excluidos - IB ...
Listas lineales
-
Upload
independent -
Category
Documents
-
view
0 -
download
0
Transcript of Listas lineales
Tipo abstracto de datos lista lineal
Un tipo abstracto de datos lineal es un tipo abstracto de datos que se
puede representar como una secuencia de elementos
{𝑎1, … 𝑎𝑖, …, 𝑎𝑗, …, 𝑎𝑛 }
donde un conjunto finito (y corto), de elementos son elementos
destacados y la única relación entre dos elementos 𝑎𝑖 y 𝑎𝑗 , si la
hubiere, es la de ser el antecesor de o el sucesor de.
Tipos abstracto de datos lineales
• Secuencias (Arreglos)
• Colas
• Pilas
• Vectores
• Matrices
• Listas ligadas
Arreglos
• Un array o arreglo (lista o tabla) es una secuencia de datos del
mismo tipo.
• Los datos se llaman elementos del array y se numeran
consecutivamente 0, 1, 2, 3 ...
• El tipo de elementos almacenados en el array puede ser cualquier
dato simple de Java o de un tipo previamente declarado como una
clase.
• Normalmente, el array se utiliza para almacenar tipos tales como
char, int o float.
Arreglos
• Un array puede contener, por ejemplo, la edad de los alumnos de
una clase o las temperaturas de cada día de un mes en una ciudad
determinada.
• Cada ítem del array se denomina elemento.
• Los elementos de un array se numeran, como ya se ha comentado,
consecutivamente 0, 1, 2, 3,...
• Estos números se denominan valores índice o subíndice del array.
Arreglos
• Si el nombre del array es a, entonces a[0] es el nombre del
elemento que está en la posición 0, a[1] es el nombre del
elemento que está en la posición 1, etc.
• En general, el elemento i-ésimo está en la posición i-1, de
modo que si el array tiene n elementos, sus nombres son a[0],
a[1],...,a[n-1]
Declaración de un array
• Un array se declara de modo similar a otros tipos de
datos, excepto que se debe indicar al compilador que
es un array, lo que se hace con los corchetes.
– int [] v;
– float w[];
Declaración de un array
• Los corchetes se pueden colocar de dos formas:
– A continuación del tipo de datos
– A continuación del nombre del array
• Así, la sintaxis de declaración de variables array en Java
es:
– tipo [] identificador;
– tipo identificador[];
Declaración de un array
• El primer formato indica que todos los
identificadores son arrays del tipo.
• En el segundo formato, array es sólo el
identificador al que le siguen los [].
Distintas declaraciones de arrays
1. char cad[], p;
cad es un array de tipo char, p es una variable de tipo char
2. int [] v, w;
tanto v como w son declarados arrays unidimensionales de tipo
int.
3. double [] m, t[], x;
m y x son array de tipo double; t es un array de array con
elementos de tipo double.
Creación de un array
• Java considera que un array es una referencia a un
objeto.
• En consecuencia, para que realmente se cree
(instancie) el array, usa el operador new junto al tipo
de los elementos del array y su número.
Creación de un array
• Por ejemplo, para crear un array que guarde las notas
de la asignatura de música en un aula de 26 alumnos:
– float [] notas;
– notas = new float[26];
• Se puede escribir en una misma sentencia:
– float [] notas = new float[26];
Arrays de diferentes tipos de datos
1. int a[] = new int [10];
a es un array de 10 elementos de tipo int
2. final int N = 20;
float [] vector;
vector = new float[N];
Se ha creado un array de N elementos de tipo float.
• Para acceder al tercer elemento y leer un valor de entrada:
– vector[2] = (Float.valueOf(entrada.readLine())).floatValue();
Acceso a elementos de diferentes arrays
1. int []mes = new int[12];
2. float salarios[];
3. salarios = new float[25];
mes[4] = 5;
4. salario[mes[4]*3];
3. final int MX = 20;
Racional []ra = new Racional[MX];
ra[MX - 4];
1. mes contiene 12 elementos: el primero, mes[0], y el último, mes[11].
2. Declara un array de tipo float.
3. Crea el array de 25 elementos.
4. Accede al elemento salario[15].
5. Declara un array de 20 objetos Racional
6. Accede al elemento ra[16]
Tamaño de los arrays
• Java considera cada array como un objeto que, además de
tener capacidad para almacenar elementos, dispone del
atributo length con el número de elementos.
double [] v = new double[15];
System.out.print(v.length); //escribe 15, número de elementos de v.
Uso del atributo length
• Haciendo uso del atributo length se calcula la suma de los
elementos de un array de tipo double.
double suma (double [] w)
{
double s = 0.0;
for (int i = 0; i < w.length; i++)
s += w[i];
return s;
}
Inicialización de un array
• Los elementos del array se pueden inicializar con
valores constantes en una sentencia que, además,
determina su tamaño.
• Estas constantes se separan por comas y se encierran
entre llaves, como en los siguientes ejemplos.
Inicialización de un array
int numeros[] = {10, 20, 30, 40, 50, 60}; /* Define un array de 6 elementos
y se inicializan a las constantes */
int n[] = {3, 4, 5} // Define un array de 3 elementos
char c[] = {'L','u','i','s'}; // Define un array de 4 elementos
Ejercicio
• Escribir un programa en Java o C++ que lea un
número NUM de enteros en un array, multiplique
los elementos del array por su valor ordinal y
visualice los valores del array y el producto.
Copia de arrays
• En Java, los nombres de arrays son referencias
a un bloque de memoria distribuida según el
número de elementos; por ello, si se hace una
asignación entre dos variables array, éstas se
refieren al mismo array.
Ejercicio
• Escribir un programa en Java o C++ que :
– Defina dos arrays de tipo double, v y w con 15 y 20 elementos
respectivamente.
– En el array v se guardan los valores de la función 𝑒2𝑥−1para x ≥ 1.0;
– El valor de x se incrementa en 0.2 para cada elemento del array v
– En el array w se inicializa cada elemento al ordinal del elemento.
– A continuación se copian los 10 últimos elementos de v a partir del elemento
11 de w.
– Por último, se imprimen los elementos de ambos arrays.
Arrays multidimencionales
• Los arrays vistos anteriormente se conocen como arrays unidimensionales
(una sola dimensión) y se caracterizan por tener un solo subíndice.
• Estos arrays se conocen también por el término listas.
• Los arrays multidimensionales son aquellos que tienen más de una
dimensión y, en consecuencia, más de un índice.
• Los más usuales son los de dos dimensiones, conocidos también por el
nombre de tablas o matrices.
• Sin embargo, es posible crear arrays de tantas dimensiones como
requieran sus aplicaciones, ya sean tres, cuatro o más.
Array de dos dimensiones
• Un array de dos dimensiones (m × n) equivale a una
tabla con múltiples filas y múltiples columnas.
Array de dos dimensiones
• Un array de dos dimensiones es en realidad
un array de arrays, es decir, un array
unidimensional, y cada elemento no es un
valor entero, de coma flotante o carácter, sino
que cada elemento es otro array.
Declaración del array bidimensional
• La sintaxis para la declaración de un array de dos dimensiones
es: <tipo de datoElemento> <nombre array> [][];
o bien
<tipo de datoElemento> [][]<nombre array>;
Ejemplos de declaración de matrices :
char pantalla[][];
int puestos[][];
double [][]matriz;
Declaración del array bidimensional
• Para reservar memoria y especificar el número de filas y de
columnas se utiliza el operador new.
• Así, a partir de las declaraciones anteriores
pantalla = new char[80][24]; // matriz con 80 filas y 24 columnas
puestos = new int[10][5]; // matriz de 10 filas por 5 columnas
final int N = 4;
matriz = new double[N][N]; // matriz cuadrada de N*N elementos
Inicialización de arrays multidimensionales
• La inicialización se hace encerrando entre llaves la lista de constantes,
separadas por comas, que forma cada fila, como en los ejemplos
siguientes:
1. int tabla1[][] = { {51, 52, 53},{54, 55, 56} };
Define una matriz de 2 filas por 3 columnas cada una.
O bien con este formato más amigable:
int tabla1[][] = { {51, 52, 53}, {54, 55, 56} };
2. int tabla2[][] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}
};
Acceso a los elementos de arrays bidimensionales
• El acceso a los elementos de arrays
bidimensionales sigue el mismo formato que
el acceso a los elementos de un array
unidimensional.
• En este caso, con las matrices deben
especificarse los índices de la fila y la columna.
Acceso a los elementos de arrays bidimensionales
• Con dos bucles anidados se accede a todos los
elementos de una matriz. Su sintaxis es:
int fila, col;
for (fila = 0; fila < NumFilas; ++fila)
for (col = 0; col < NumCol; ++col)
Procesar elemento Matriz[fila][col];
Ejercicio
• Codificar un programa en Java o C++ para dar
entrada y posterior visualización de un array
de dos dimensiones.
Suma de Matrices
• Si las matrices A=(aij) y B=(bij) tienen la misma
dimensión, la matriz suma es:
– A+B=(aij+bij).
• La matriz suma se obtiene sumando los
elementos de las dos matrices que ocupan la
misma posición.
Ejercicio
• Escribir un programa en Java o C++ que sume o reste dos
matrices.
– El programa debe preguntar por el tamaño de las matrices m x n
– Después deberá leer los datos de la matriz A y posteriormente los
datos de la matriz B
– Debe presentar dos opciones a elegir suma y/o resta
– Después de finalizar el cálculo imprimir las tres matrices
• A, B, C=A+B