Post on 11-Apr-2015
transcript
Slide 7-1Copyright © 2003 Pearson Education, Inc.
Figure:
Estructuras de datos
Slide 7-2Copyright © 2003 Pearson Education, Inc.
Fichas ordenas en orden alfabético y por otro criterio, usando hilos
: hilo de inicio
: hilo de ficha
: hilo final
ficha + hilo que sale de ella = nodohilo naranjo = puntero iniciohilo verde = puntero de nodo que apunta a “nada”
Slide 7-3Copyright © 2003 Pearson Education, Inc.
usando hilos, equivalencia en Java
: hilo de inicio Nodo inicio;
: hilo de ficha class Nodo { int x; Nodo siguiente; }
: hilo final es el puntero de un objeto que tiene asignado el valor null apunta a null:
Nodo x = new Nodo(…); x.siguiente = null;
Slide 7-4Copyright © 2003 Pearson Education, Inc.
Premios Novel ordenados por título pero enlazados por autor
Slide 7-5Copyright © 2003 Pearson Education, Inc.
El arreglo Readings almacenado en memoria a aprtir de la dirección x
Slide 7-6Copyright © 2003 Pearson Education, Inc.
Arreglo bidimensional con cuatro filas y cinco columnas
Slide 7-7Copyright © 2003 Pearson Education, Inc.
Nombres almacenados en memoria como una lista contigua
Slide 7-8Copyright © 2003 Pearson Education, Inc.
Estructura de una lista encadenada
Slide 7-9Copyright © 2003 Pearson Education, Inc.
Borrando un elemento de una lista encadenada
Slide 7-10Copyright © 2003 Pearson Education, Inc.
Insertando un elemento de una lista encadenada
Slide 7-11Copyright © 2003 Pearson Education, Inc.
Procedimiento para imprimir una lista encadenada
Slide 7-12Copyright © 2003 Pearson Education, Inc.
Usando una pila (stack) para imprimir una lista en orden inverso
Slide 7-13Copyright © 2003 Pearson Education, Inc.
Usando la pila para imprimir en orden inverso
Slide 7-14Copyright © 2003 Pearson Education, Inc.
Procedimiento (que usa una pila auxiliar) para imprimir una lista encadenada en orden inverso
Slide 7-15Copyright © 2003 Pearson Education, Inc.
Una pila en memoria
Slide 7-16Copyright © 2003 Pearson Education, Inc.
Cola implementada con punteros head y tail
Slide 7-17Copyright © 2003 Pearson Education, Inc.
Cola que se “arrastra” a través de la memoria
Slide 7-18Copyright © 2003 Pearson Education, Inc.
Cola circular que contiene las letras F hasta O realmente almacenada en la memoria
Slide 7-19Copyright © 2003 Pearson Education, Inc.
Una cola circular en su forma conceptual en la cual la última celda es “adyacente” a la primera celda
Slide 7-20Copyright © 2003 Pearson Education, Inc.
Un organigrama ejemplo
Slide 7-21Copyright © 2003 Pearson Education, Inc.
Terminología de árboles
Slide 7-22Copyright © 2003 Pearson Education, Inc.
Estructura de un nodo en un árbol binario
Slide 7-23Copyright © 2003 Pearson Education, Inc.
Estructura conceptual y la organización real de un árbol binario que usa sistema de lista encadenada
Slide 7-24Copyright © 2003 Pearson Education, Inc.
Figure 7.20: A tree stored without pointers
Slide 7-25Copyright © 2003 Pearson Education, Inc.
Vista conceptual de árbol desbalanceado y su almacenamiento como arreglo
Slide 7-26Copyright © 2003 Pearson Education, Inc.
Las letras A a la M arregladas en un árbol ordenado
Slide 7-27Copyright © 2003 Pearson Education, Inc.
Los árboles sucesivamente menores en la búsqueda de la letra J
Slide 7-28Copyright © 2003 Pearson Education, Inc.
Imprimir un árbol en orden alfabético
Slide 7-29Copyright © 2003 Pearson Education, Inc.
Procedimiento recursivo Java para imprimir un árbol binario
public void imprimeArbol(Nodo r){ if(r!=null){
if(r.izq!=null){
imprimeArbol(r.izq);
}
System.out.println(r.x);
if(r.der!=null){
imprimeArbol(r.der);
}
}
}
class Nodo {
int x;
Nodo izq;
Nodo der;
Nodo(int xx){
x=xx;
}
}
Slide 7-30Copyright © 2003 Pearson Education, Inc.
Insertar una M en la lista B, E, G, H, J, K, N, P
almacenada como árbol binario
Slide 7-31Copyright © 2003 Pearson Education, Inc.
M insertada en la lista B, E, G, H, J, K, N, P
almacenada como árbol binario
Slide 7-32Copyright © 2003 Pearson Education, Inc.
Procedimiento para insertar una nueva entrada en árbol binario (1)
public void insertarNodo(int xx){
if(raiz==null){
raiz=new Nodo(xx);
} else {
insertar(raiz,xx);
}
}
Slide 7-33Copyright © 2003 Pearson Education, Inc.
Procedimiento para insertar una nueva entrada en árbol binario (2)
void insertar(Nodo r, int xx){
if(xx==r.x)return;
if(xx<r.x){
if(r.izq==null)r.izq=new Nodo(xx);
else insertar(r.izq,xx);
return;
}
if(xx>r.x){
if(r.der==null)r.der=new Nodo(xx);
else insertar(r.der,xx);
return;
}
}
Slide 7-34Copyright © 2003 Pearson Education, Inc.
Búsqueda binaria en una lista organizada como árbol binario
Slide 7-35Copyright © 2003 Pearson Education, Inc.
Una pila de enteros en C++
Slide 7-36Copyright © 2003 Pearson Education, Inc.
Pila de enteros implementada en Java