Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Es t r uct ur a d e
D at os
Estructura de Datos
Bu sca r en est e si t i o
Estructura de Datos
>
Unidad I
Introduccin a las
estructuras de
datos
Unidad II
Recursividad
Pilas
Unidad III
Estructuras
Lineales
Unidad IV
Estructuras no
lineales
Unidad V Mtodos
de ordenamiento
Unidad VI Mtodos
de bsqueda
Unidad VII Anlisis
de los algoritmos
Mapa del sitio
https://sites.google.com/site/estdatjiq/home/unidad-iii
1/42
1/27/15
Translate
Descripcin
Devuelve true si la pila esta vaca y false
si la pila contiene elementos.
2/42
1/27/15
Object
push(Object
elemento)
int
Busca elemento en la pila. Si lo
search(Object encuentra, devuelve su desplazamiento
elemento)
desde lo alto de la pila. De lo contrario,
se devuelve -1.
Es decir devuelve las veces que hay que
hacer pop para que el dato este en la
cima.
3/42
1/27/15
NO
https://sites.google.com/site/estdatjiq/home/unidad-iii
4/42
1/27/15
5/42
1/27/15
Infija
Postfija
ab*ac+/
Operador
Smbolo Prioridad
Parntesis
()
Potencia
Mas alta
Multiplicacin / Divisin * /
Suma / Resta
https://sites.google.com/site/estdatjiq/home/unidad-iii
+-
Mas Baja
6/42
1/27/15
Pseudocdigo
1. Inicializar la pila
2. Repetir hasta que no haya caracteres en la expresin de
entrada
2.1 Leer un carcter de la expresin
2.2 Si es un operando se pasa a la expresin postfija
de salida
2.3 Si el elemento es un operador distinto de )
entonces:
2.3.1 Si la pila est vaca se mete en la pila.
2.3.2 Si la pila NO est vaca
Si la prioridad del operador es mayor
que la prioridad del operador de la
cima de la pila se mete en la pila
Si la prioridad del operador es menor o
igual que la prioridad del operador de
la cima de la pila se saca el
operador de la cima y se coloca en la
expresin postfija. Volvemos a 2.3
2.4 Si el elemento es el operador ) entonces:
2.4.1 Se sacan operadores de la pila hasta
encontrar el parntesis ( que se elimina (las
expresiones postfijas no llevan parntesis)
3. Al finalizar el recorrido por la expresin aritmtica se
pasa todo el contenido de la pila a la expresin postfija
Ejemplo:
Expresin aritmtica infija: A*B / (A+C)
https://sites.google.com/site/estdatjiq/home/unidad-iii
7/42
1/27/15
Tablas de prioridad
Notacin infija
Notacin postfija
Operador
Prioridad
Operador
Prioridad
(,)
/,*
/,*
+,-
+,-
Inicializar la pila
8/42
1/27/15
Ejemplo:
Expresin aritmtica infija: A*B / (A+C)
Expresin aritmtica postfija: AB*AC+/
Valores A=4, B=5 y C=6: 45*46+/
https://sites.google.com/site/estdatjiq/home/unidad-iii
9/42
1/27/15
Colas
Una cola, es una estructura de datos lineal que permite
almacenar elementos por un extremo y extraerlos por el
otro. Por tal motivo, es una estructura FIFO (first in, first out:
primero en entrar, primero en salir).
Funcionamiento
Cola vaca
13
10/42
1/27/15
13
15
13
15
20
13
15
20
13
15
20
15
20
15
20
11/42
1/27/15
13
15
20
20
20
Colas Circulares.
Una cola circular es una estructura de datos lineal que hace
un uso ms eficiente de la memoria disponible para su
almacenamiento, sin la necesidad de requerir ms espacio,
utilizando el que este desocupado. La cola se controla en
forma circular, es decir, el elemento anterior al primero es el
ltimo.
https://sites.google.com/site/estdatjiq/home/unidad-iii
2 3 4
6 7
12/42
1/27/15
0
ini
1 2 3
fin max
0 1
fin ini
5
max
https://sites.google.com/site/estdatjiq/home/unidad-iii
13/42
1/27/15
Por ejemplo
Permite
la
extraccin de
los
elementos
por
https://sites.google.com/site/estdatjiq/home/unidad-iii
14/42
1/27/15
13
13
15
13
15
20
13
15
20
15/42
1/27/15
10
13
15
20
15
20
15
20
15
20
20
20
20
Sale el valor de 5.
15
20
16/42
1/27/15
13
https://sites.google.com/site/estdatjiq/home/unidad-iii
13
15
17/42
1/27/15
10
13
15
20
10
13
15
20
10
13
15
10
13
15
Sale el valor de 5.
20
10
13
15
10
13
15
13
15
18/42
1/27/15
13
15
Clase auto-referenciada,
Nodo,
Campo de enlace y
19/42
1/27/15
Enlace
Insercin de un elemento.
Borrado de un elemento.
Recorrido de la lista.
Bsqueda de un elemento.
20/42
1/27/15
Operaciones
Insercin de elementos
Al final de la lista
https://sites.google.com/site/estdatjiq/home/unidad-iii
21/42
1/27/15
fin.sig=nuevo;
Final se hace que apunte al nuevo
nodo ya que ahora sera el final.
Al inicio de la lista
elemento
que
es
nuevo
inicio=nuevo
cero
o Si est vaca la lista es decir inicio==null
Se crea un nuevo nodo o se asigna
un nuevo nodo al inicio
Final se hace que apunte tambin al
https://sites.google.com/site/estdatjiq/home/unidad-iii
22/42
1/27/15
es
diferente
de
null.
Eliminacin de elementos
Del inicio de la Lista
https://sites.google.com/site/estdatjiq/home/unidad-iii
23/42
1/27/15
De cierta posicin
https://sites.google.com/site/estdatjiq/home/unidad-iii
24/42
1/27/15
Dobles.
Una lista enlazada doble es una coleccin de nodos que
cuentan con dos direcciones en cada uno de sus nodos y
que en conjunto forman una estructura de datos lineal. Cada
nodo es un objeto compuesto que guarda una referencia a
un elemento (dato), una referencia al nodo anterior
(direccin predecesora) y una referencia al nodo siguiente
(direccin sucesora).
Un nodo de una lista enlazada doble puede determinar
https://sites.google.com/site/estdatjiq/home/unidad-iii
25/42
1/27/15
Operaciones
Insercin (Al final del la lista, al inicio de la lista y en
cierta posicin de la lista)
Recorrido (Por el inicio y por el final)
Eliminacin (Del inicio de la lista, del final de la lista y
de cierta posicin de la lista).
Insercin
Al final de la lista
https://sites.google.com/site/estdatjiq/home/unidad-iii
26/42
1/27/15
final=nuevo
Al inicio de la lista
inicio, ini=nuevo;
https://sites.google.com/site/estdatjiq/home/unidad-iii
27/42
1/27/15
hasta
llegar
la
posicin
especificada.
Debe de definir un nodo que sea
la referencia del primer nodo.
Nodo temp=ini
Debe definir una variable entera
que cuente las posiciones dentro
de la lista.
Iniciar el recorrido mediante un
ciclo mientras que temp!=null y
adems cont sea diferente de la
posicin donde se quiere insertar el
nuevo elemento.
o Al finalizar el recorrido a la posicin
buscada
Puede ser que cont se quede con
0
Entonces debe de
cont==posi
&&
temp!=null
https://sites.google.com/site/estdatjiq/home/unidad-iii
28/42
1/27/15
Se crea un nuevo
nodo
Se crea una
o
ant=temp.ant
Anterior en su campo
siguiente
se
hace
que
Recorridos
Recorrido a partir del inicio
https://sites.google.com/site/estdatjiq/home/unidad-iii
29/42
1/27/15
Eliminar
Del inicio de la lista
https://sites.google.com/site/estdatjiq/home/unidad-iii
30/42
1/27/15
Nodo sig=ini.sig;
ini.sig=null
anterior a null
Sig.ant=null
Ini=sig
https://sites.google.com/site/estdatjiq/home/unidad-iii
31/42
1/27/15
Nodo ant=fin.ant
anterior
ant.sig=null
Fin.ant=null
Fin=ant
https://sites.google.com/site/estdatjiq/home/unidad-iii
32/42
1/27/15
del siguiente
Nodo ant=temp.ant,
sig=temp.sig
Se establecen las ligas entre ant y
sig
ant.sig=sig
sig.ant=ant
temp.sig=null
temp.ant=null
33/42
1/27/15
Mtodo
add()
var_boolean=lista.add(Object
elemento);
lista.add(int
elemento);
clean()
posicion,
Object
lista.clean;
clone()
lista_destino=lista.clone();
https://sites.google.com/site/estdatjiq/home/unidad-iii
34/42
1/27/15
contains()
var_boolean=lista.contains(Object
elemento);
ensureCapacity()
lista.ensureCapacity(int
capacidad);
get()
var_Object=lista.get(int posicion);
indexOf()
var_int=lista.indexOf(Object
elemento);
isEmpty()
var_boolean=lista.isEmpty();
https://sites.google.com/site/estdatjiq/home/unidad-iii
35/42
1/27/15
lastIndexOf()
var_int=lista.lastIndexOf(Object
elemento);
remove()
var_Object=lista.remove(int
posicion);
removeRange()
lista.removeRange(int
posicion_incial, int posicion_final);
set()
var_Object=lista.set(int
Object elemento);
https://sites.google.com/site/estdatjiq/home/unidad-iii
posicion,
36/42
1/27/15
size()
var_int=lista.size();
trimToSize()
lista.trimToSize();
Listas con la clase LinkedList.
https://sites.google.com/site/estdatjiq/home/unidad-iii
37/42
1/27/15
Mtodo
add()
var_boolean=lista.add(Object
elemento);
lista.add(int
elemento);
addFirst()
posicion,
Object
lista.addFirst(Object elemento);
addLast()
lista.addLast(Object elemento);
clean()
https://sites.google.com/site/estdatjiq/home/unidad-iii
38/42
1/27/15
lista.clean;
clone()
lista_destino=lista.clone();
contains()
var_boolean=lista.contains(Object
elemento);
get()
var_Object=lista.get(int posicion);
getFirst()
var_Object=lista.getFirst();
getLast()
https://sites.google.com/site/estdatjiq/home/unidad-iii
39/42
1/27/15
var_Object=lista.getLast();
indexOf()
isEmpty()
var_boolean=lista.isEmpty();
lastIndexOf()
var_int=lista.lastIndexOf(Object
elemento);
remove()
var_Object=lista.remove(int posicion);
removeFirst()
https://sites.google.com/site/estdatjiq/home/unidad-iii
40/42
1/27/15
var_Object=lista.removeFirst();
removeLast()
var_Object=lista.removeFirst();
set()
var_Object=lista.set(int
Object elemento);
size()
posicion,
var_int=lista.size();
Ejercicios Finales
a) Implementar un pila a travs de una lista simple
b) Implementar un cola circular a travs de una lista
doble
c) Implementar una cola con entrada restringida a
travs de una lista doble
d) Implementar una cola con salida restringida a
travs de una lista doble.
https://sites.google.com/site/estdatjiq/home/unidad-iii
41/42
1/27/15
.1 de 201 3 8:52
Ejercicios de List Othoniel Riv era, 1 7 de voct.
https://sites.google.com/site/estdatjiq/home/unidad-iii
42/42