Está en la página 1de 14

TIPOS DE DATOS ABSTRACTOS – TDA

Estructuras de Datos Lineales y Dinámicas

Karim Guevara Puente de la Vega

https://www.youtube.com/watch?v=HmUpRHn31FU
Índice

q Tipo de Dato Abstracto


q TDA list / lista
q Lista enlazada
Tipo de Datos Abstracto

q Un Tipo de dato abstracto (TDA/TAD) es un conjunto de datos u


objetos asociados a operaciones
q El TDA provee una interfaz con la cual es posible realizar las
operaciones permitidas sin considerar la forma como están
implementadas.
q Un TDA puede ser implementado de diferentes formas sin afectar la
funcionalidad
§ Utilizando diferentes estructuras de datos
q POO, permite encapsular los datos y las operaciones
§ Clases e interfaces
TDA lista

q Una lista se define como una serie de N elementos E1, E2,…,EN los cuales
forman una secuencia.

q Operaciones:
§ isEmpty() : devuelve verdadero si la lista esta vacía, falso en caso contrario.
§ insertFirst(x) : inserta el elemento x al inicio de la lista.
§ insertLast(x) : inserta el elemento x al final de la lista.
§ insert(x,k) : inserta el elemento x en la k-ésima posición de la lista.
§ search(x) : devuelve la posición en la lista del elemento x.
§ searchK(k) : devuelve el k-ésimo elemento de la lista.
§ remove(x) : elimina de la lista el elemento x.
TDA lista

q Implementación
§ Arreglos
§ Listas enlazadas
Arreglos:
<<interface>>
q TDAList
§ Conjunto de elementos almacenados en
espacios de memoria consecutivos
(adyacentes). ListArray ListLinked

§ Tiene espacio limitado.


§ Acceso directo a los elementos
q Lista enlazada?....
¿Qué es una lista enlazada?

q Una lista enlazada es un conjunto de elementos del mismo tipo.


q Los elementos de una lista enlazada se almacenan en nodos, los cuales están
conectados entre sí a través de una referencia (puntero).
q Los nodos se encuentran almacenados en
diferentes partes de la memoria.

¿Qué son y para qué sirven las listas enlazadas?


Fuente: Vidamrr (Marcos Rivas)
Listas enlazadas

q La estructura de un nodo es:


Node
class Node <T> {
private T data;
private Node<T> next;
} data next

q Una lista enlazada es un conjunto de nodos.


§ P.e. lista enlazada de String
Listas enlazadas - recorrido

q La referencia Node<T> aux = lista;


lista/cabeza/head/inicio
indica la posición del primer
elemento de la lista

aux = aux.next;

q Se recorre con una variable


(aux) que inicie en lista
Listas enlazadas - inserción

q Inserción después del nodo


referenciado

Node<T> nuevo = new Node<T>(...);


nuevo.next = aux.next;
aux.next = nuevo;
Listas enlazadas – imprimir elementos de
la lista
void print(Node<T> lista) {
Node<T> aux = lista;
while (aux != null) {
System.out.println(aux.data);
aux = aux.next;
}
}
Listas enlazadas dobles y circulares
Listas enlazadas con cabecera
TDA lista : lista enlazada (LinkedList)

q Caso especial: inserción del primer elemento y la eliminación del


primer?...
§ Utilizar nodo cabecera: todos los casos son iguales
TDA lista : lista enlazada

q Clase Node
q Clase ListLinked

q Costo de las operaciones en tiempo:


§ Insertar/eliminar elemento en k-ésima posición: O(k)
ü(¿Se puede hacer en O(1)?).

§ Buscar elemento x: O(n) (promedio).

También podría gustarte