Post on 15-May-2023
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