Académique Documents
Professionnel Documents
Culture Documents
Concepto de Punteros
Estructuras Dinmicas
Vector vs. Lista
Qu es un puntero?
Es una referencia a una direccin de memoria.
En otras palabras: es una variable cuyo valor es una direccin
de memoria.
.
var. y .
35 .
.
Pos: D104
D217 D104 x
OPERACIONES CON PUNTEROS
var. x Memoria
D104 var. w
.
var. y .
35
70 .
.
Pos: D104
D217 D104 x
w = x
y = 70
LISTA SIMPLEMENTE ENCADENADA
DEFINICIN DE LA ESTRUCTURA
class Lista{
NodoLista inicio;
}
class NodoLista {
Object dato;
NodoLista siguiente;
}
LISTA REPRESENTACIN GRFICA
NodoLista
dato siguiente
lista A B C
LISTA SIMPLEMENTE ENCADENADA
Algunas convenciones:
El primer nodo o elemento de la lista se llama head (cabeza)y
asumimos que en la notacin es el de ms a la izquierda.
Remover el primer elemento de la lista, nos deja con una lista
que llamaremos tail (cola) de la lista.
El ltimo elemento (el que no tiene siguiente elemento) debe
apuntar a nada. Esto lo denotamos con NULL.
En el ejemplo:
Head (MVD, BSAS, NY) = MVD.
Tail (MVD, BSAS, NY) = (BSAS, NY)
TIPO ABSTRACTO DE DATOS
Un tipo abstracto de datos (TAD) es un tipo de datos
junto con las operaciones definidas para l
(procedimientos de acceso), independientemente de su
implementacin.
Cmo se define?
Bsicamente dndole un nombre y asociando a l un
conjunto de operaciones aplicables a los elementos del
tipo.
TIPO ABSTRACTO DE DATOS
Cmo se implementa?
Asociando un mtodo (cdigo) a cada una de las
operaciones definidas sobre el conjunto.
Definimos cmo lo hace.
Ventajas
La separacin de la especificacin (definicin) y la
implementacin ayuda a reducir la complejidad de la tarea a
realizar.
El cambio en la implementacin de alguna de las operaciones
del TAD no afecta a los programas que utilizan las
operaciones de dicho TAD.
PROCEDIMIENTOS DE ACCESO
Definimos un conjunto mnimo de funciones para la
manipulacin del TAD. Estos procedimientos de acceso
pueden ser usados para definir otras funciones.
Objeto head();
Lista tail();
TAD LISTA - DEFINICIN
public interface ILista {
}//ILista
TAD LISTA DE ENTEROS - IMPLEMENTACIN
public class NodoLista {
private int elem;
private NodoLista sig;
//Constructor
public NodoLista(int n){
this.elem = n;
this.sig = null;
}
//Elemento
public void setElem(int n){
this.elem = n;
}
TAD LISTA DE ENTEROS - IMPLEMENTACIN
public int getElem(){
return this.elem;
}
//Siguiente
public void setSig(NodoLista sig){
this.sig = sig;
}
public Lista() {
this.inicio = null;
}
lista A B C
aux
LISTA DOBLEMENTE ENCADENADA
Para facilitar el recorrido de una lista en cualquier
direccin, podemos agregar un apuntador adicional a
cada nodo, que apunte al nodo anterior de la lista.
lista
A B C
LISTA DOBLEMENTE ENCADENADA
Cada nodo tiene un nuevo puntero que hace referencia al
nodo anterior en la lista.
lista A B C
LISTA CIRCULAR DOBLEMENTE ENCADENADA
Es la unin de una lista doblemente encadenada con una
lista circular.
lista A B C