Beruflich Dokumente
Kultur Dokumente
Estructuras bsicas
Arreglo
Lista enlazada
Simplemente enlazada
Doblemente enlazada
Arreglo
Listas enlazadas
09-03-2007
09-03-2007
09-03-2007
Nodos
data
data
data
data
head
null
ListaEnlazada
09-03-2007
head
agregarAlFinal(d:Data)
estContenido(d:Data):boolean
eliminar(d:Data):boolean
imprimirContenido()
Nodo
data:int
getData():int
setNext(n:Nodo)
getNext():Nodo
Nodo(d:Data,n:Nodo)
Diagrama de objetos:
:Lista
head:Nodo
data = 1
09-03-2007
Declaracin de la Lista:
next
1..1
09-03-2007
:Nodo
:Nodo
data = 20
data = -1
09-03-2007
Insertar elementos:
Al final de la lista
25
14
head
null
Manteniendo un orden
1
14
25
head
null
Al inicio de la lista
4
14
25
head
null
}
Franco Guidi Polanco (PUCV-EII)
09-03-2007
25
head
null
25
09-03-2007
head
null
null
aux
public Lista{
...
public void agregarAlFinal(int dato){
...
head = new Nodo( dato, null );
...
}
...
}
Franco Guidi Polanco (PUCV-EII)
10
head
09-03-2007
25
14
head
null
aux
11
12
Recorrido de la lista
Caso general:
...
}
Franco Guidi Polanco (PUCV-EII)
09-03-2007
13
Bsqueda en la lista
09-03-2007
14
Eliminacin de un elemento
25
14
head
null
head = head.getNext();
25
14
head
Sin otras referencias: candidato a eliminacin
(recolector de basura de Java)
null
...
1
14
head
09-03-2007
15
null
09-03-2007
16
Eliminacin de un elemento
Eliminacin de un elemento
25
14
head
null
aux.setNext(aux.getNext().getNext());
aux
25
14
head
Sin otras referencias: candidato a eliminacin
(recolector de basura de Java)
25
head
Franco Guidi Polanco (PUCV-EII)
null
null
09-03-2007
17
09-03-2007
Lista vaca:
head
18
...
null
Valor irrelevante
25
head
null
Primer elemento de la lista
09-03-2007
19
09-03-2007
20
head
null
aux
aux
aux.setNext(aux.getNext().getNext());
Clase
Lista
head
null
Sin otras referencias: candidato a eliminacin
(recolector de basura de Java)
}
Franco Guidi Polanco (PUCV-EII)
09-03-2007
21
09-03-2007
22
return false;
}
09-03-2007
23
09-03-2007
24
Diagrama de clases:
Lista
1..1
agregarAlFinal(d:Data)
estContenido(d:Data)
eliminar(d:Data):boolean
imprimirContenido()
head
1..1
1..1
tail
Nodo
data: int
getData():Data
setNext(n:Nodo)
getNext():Nodo
Nodo(d:Data,n:Nodo)
head
null
tail
...
}
Diagrama de objetos:
Lista
head
25
ghost:Nodo
1stNode:Nodo
2ndNode:Nodo
data = 20
data = -1
09-03-2007
25
Versin con
nodo fantasma
09-03-2007
26
09-03-2007
null
tail
tail
Franco Guidi Polanco (PUCV-EII)
head
27
09-03-2007
28
14
head
null
null
Franco Guidi Polanco (PUCV-EII)
09-03-2007
29
09-03-2007
14
head
09-03-2007
31
30
Listas
Representa una coleccin conformada por una secuencia finita y
ordenada de datos denominados elementos.
Ordenada implica que cada elemento tiene una posicin.
Los elementos corresponden a un tipo de dato.
La lista est vaca cuando no contiene elementos.
El nmero de elementos se denomina largo de la lista.
El comienzo de la lista es llamado cabeza (head), y el final cola
(tail).
Notacin: (a1, a2, ..., an).
09-03-2007
33
Interfaz elemental
Interfaz extendida
34
09-03-2007
35
09-03-2007
36
Operaciones:
miLista.insert(99) :
miLista=(12, 99, 22, 50, 30)
miLista.next():
Dato actual
09-03-2007
37
miLista.remove():
22
miLista.setFirst():
09-03-2007
38
miLista.currValue():
09-03-2007
40
Interfaz extendida:
Implementacin basada en arreglos
Implementacin basada en lista doblemente enlazada
Implementacin basada en lista simplemente enlazada
09-03-2007
41
13 12 20
5
(a)
09-03-2007
42
(b)
23 13 12 20
Insertar 23
13 12 20
(c)
Franco Guidi Polanco (PUCV-EII)
09-03-2007
43
09-03-2007
44
Uso de listas
09-03-2007
45
...
List lista = new LList(); // Implementacin seleccionada
lista.insert( Hola );
lista.insert( chao );
lista.setFirst();
while( !lista.eol() ){
System.out.println( (Sring)lista.currValue());
lista.next();
}
lista.setFirst();
String eliminado = (String) lista.remove()
...
Franco Guidi Polanco (PUCV-EII)
09-03-2007
46
...
List lista = new AList(); // Implementacin seleccionada
lista.insert( Hola );
lista.insert( chao );
lista.setFirst();
while( !lista.eol() ){
System.out.println( (Sring)lista.currValue());
lista.next();
}
lista.setFirst();
String eliminado = (String) lista.remove()
...
09-03-2007
Pilas
47
09-03-2007
48
pila.push(14):
pila.push(1):
09-03-2007
49
pila.push(4)
4
top
pila.push(14)
14
14
4
top
(nuevo)
09-03-2007
50
top=4
null
4
top
Se inserta y remueve
siempre el primer
elemento:
no se requiere nodo
fantasma
null
pila.pop():
top
1
14
4
top
14
4
top
null
pila.pop()
4
top
Franco Guidi Polanco (PUCV-EII)
null
09-03-2007
51
09-03-2007
52
Ejercicio pilas
Colas
Basada en un arreglo
Basada en una lista simplemente enlazada
09-03-2007
53
09-03-2007
54
cola=(20)
cola.enqueue( 15 )
cola=(20, 15)
cola.enqueue( 40 )
cola=(15, 40)
cola.dequeue()
20
cola=(40)
15
Franco Guidi Polanco (PUCV-EII)
09-03-2007
55
09-03-2007
56
rear=3
null
front
rear
rear=2
09-03-2007
57
09-03-2007
rear=3
front=0
5
front=1 rear=3
09-03-2007
58
Funcin de avance
Dados:
pos: posicin actual
size: tamao arreglo
pos=(pos+1);
if (pos>=size)
pos=0;
rear=3
4
59
09-03-2007
60
09-03-2007
61
09-03-2007
62