Sie sind auf Seite 1von 20

UNIVERSIDAD DEL SUR

MATERIA

SEMINARIO DE PROGRAMACIÓN DE

COMPUTADORAS

ASESOR

DR. GANDHI SAMUEL HERNÁNDEZ CHAN

ALUMNA

ROCIO LILIA MENA CANTORAN

ACTIVIDAD #4
ESTRUCTURAS DE DATOS

Las estructuras de datos son un medio para manejar grandes cantidades de datos de
manera eficiente para usos tales como grandes bases de datos y servicios de indización
de Internet. Por lo general, las estructuras de datos eficientes son la clave para diseñar
algoritmos eficientes. Algunos métodos formales de diseño y lenguajes de programación
destacan las estructuras de datos, en lugar de los algoritmos, como el factor clave de
organización en el diseño de software. Las estructuras de datos se basan generalmente
en la capacidad de una computadora para recuperar y almacenar datos en cualquier lugar
de su memoria.

Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de


aplicaciones, y algunos son altamente especializados para tareas específicas.

Las estructuras de datos pueden ser Estáticas o Dinámicas.

Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en memoria
se define antes de que el programa se ejecute y no puede modificarse dicho tamaño
durante la ejecución del programa.

Las estructuras de datos dinámicas no tienen las restricciones o limitaciones en el tamaño


de memoria ocupada que son propias de las estructuras estáticas.

Los tipos de datos simples tienen como característica común que cada variable representa
a un elemento.

Los tipos de datos estructurados tienen como característica común que un identificador
(nombre) puede representar múltiples datos individuales, pudiendo cada uno de éstos ser
referenciado independientemente.

Las estructuras de datos básicas son:

 Arreglos,
 Matrices,
 Pilas,
 Colas
 Listas

ARREGLOS
Un arreglo (matriz o vector) es un conjunto finito y ordenado de elementos homogéneos.
La propiedad “ordenado” significa que el elemento primero, segundo, tercero,…, enésimo
de un arreglo puede ser identificado. Los elementos de un arreglo son homogéneos, es
decir, del mismo tipo de dato.
Cada componente de un arreglo se denota, explícitamente, y es accedida, directamente,
mencionando el nombre del arreglo seguido de una expresión encerrada entre paréntesis,
a la que llamamos índice del arreglo.
El índice del arreglo toma valores entre uno y la dimensión del mismo. Si se direcciona una
posición que no se encuentra entre dichos límites, se producirá un error de ejecución, pues
se estará intentando acceder a una zona de memoria indefinida (pues el vector está
definido entre las posiciones 1 y dimensión).
A un arreglo lineal se lo denomina unidimensional, y se utiliza un solo índice para denotar
sus elementos. A un arreglo tipo matricial se lo denomina arreglo bidimensional o de dos
dimensiones, y usa dos índices para determinar sus elementos.

OPERACIONES SOBRE ARREGLOS

Las operaciones que se pueden realizar con arreglos durante el proceso de resolución de
un problema son:

 Asignación;

 Lectura / Escritura;

 Recorrido (acceso secuencial);

 Actualización (añadir, borrar, insertar);

 Ordenamiento;

 Búsqueda.

En general, las operaciones con arreglos implican el tratamiento o procesamiento de los


elementos individuales del arreglo.

ARREGLOS UNIDIMENSIONALES: VECTORES

Los elementos de un arreglo lineal se almacenan en posiciones sucesivas de memoria, es


decir, un elemento al lado del otro. Si cada elemento de un arreglo de dimensión k, ocupa
x posiciones, entonces el arreglo ocupa en total x * k posiciones. El almacenamiento es
igual al de las variables, con la particularidad que ahora el conjunto de variables ocupa
posiciones sucesivas o contiguas de la memoria.

Declaración de vectores
Los vectores se definen en la zona de declaración del programa. Dicha definición se
encabeza con la palabra reservada “Tipos estructurados”. Para declararlos se explicita el
nombre del mismo, acompañado de su dimensión, y a continuación se especifica el tipo de
sus elementos. Todos los elementos de un vector serán del mismo tipo.
APLICACIÓN DE ARREGLO UNIDIMENSIONAL:
Dados cuatro arreglos A, B, C y D de 20 elementos enteros cada uno, generar un arreglo
D de cuatro elementos, donde el contenido de cada elemento sea la suma de los 20
elementos de cada arreglo A , B, C y D es decir : D[1] = A[1]+ A[2]+ A[3]+…A[20].

Pseudocódigo:

Entero A[20], B[20], C[20], D[20], E[4]


Repetir desde (i=1¸i<=4; i=i+1)
E[i]=0
Fin Repetir
Repetir desde (i=1¸i<=20; i=i+1)
Leer (A[i])
Leer (B[i])
Leer (C[i])
Leer (D[i])
Fin Repetir
Repetir desde (i=1¸i<=20; i=i+1)
E[1] = E[1] + A[i]
E[2] = E[2] + B[i]
E[3] = E[3] + C[i]
E[4] = E[4] + D[i]
Fin Repetir
Repetir desde (i=1¸i<=4; i=i+1)
Desplegar ( D[i] )
Fin Repetir
Fin
ARREGLOS BIDIMENSIONALES: MATRICES

Las matrices pertenecen al conjunto de estructuras de datos compuestas homogéneas.


Podríamos hacer una primera aproximación a estas estructuras definiéndola así:
Una matriz es un vector de vectores; un arreglo lineal donde cada elemento as a su vez un
vector.
Por supuesto que dichos vectores son todos de igual tipo, precisión y dimensión.
El problema de este esquema es que se hace complicado referenciar un elemento: primero
hay que determinar cuál vector se quiere trabajar, y luego cual es el elemento dentro del
mismo.
Para simplificar esto, se visualiza gráficamente a la matriz como una cuadrícula:
líneas horizontales = filas
líneas verticales = columnas
Con este esquema se simplifica el concepto de matriz: es un conjunto de vectores. Cada
fila representa un vector, asimismo, cada columna representa un vector. De esta forma es
más sencillo el acceso: se determina primero cual de todas las columnas o filas interesa, y
luego se usa el elemento deseado como se hace con cualquier vector.
Podemos ver entonces, que todo dato que se guarde en esta cuadrícula debe ser
referenciado a través de un índice de fila y uno de columna: cada elemento tiene dos
entradas, una horizontal o de fila, y una vertical o de columna; en la intersección de fila y
columna se hallará el dato.
En forma similar a un arreglo lineal, la matriz tiene un nombre único y genérico, que respeta
las normas de declaración de variables, y para designar a sus elementos es necesario usar
2 índices.
Así, el nombre de la matriz, seguido de los 2 índices separados con coma (el primero para
la fila; el segundo para la columna), y encerrados entre corchetes, denota un elemento de
la matriz en particular. EJ: Mat[2,3] es el elemento de la matriz Mat que se halla en la
intersección se la 2da. Fila y la 3er. Columna.
Por ser un arreglo homogéneo, sus elementos son todos del mismo tipo y precisión. La
dimensión de una matriz (cantidad total de elementos) se calcula haciendo el producto
entre la cantidad total de filas por la cantidad total de columnas. En forma genérica, cada
matriz de M filas y N columnas tendrá (M*N) elementos.
Almacenamiento de matrices en memoria
El espacio que ocupa en memoria una matriz se calcula teniendo en cuenta la cantidad
total de elementos, multiplicada por el espacio que ocupa un elemento del tipo y precisión
especificado para dicha matriz. EJ: dada una matriz de M filas por M columnas, de enteros
de 2 dígitos, el espacio que ocupa en memoria es (M*N*espacio que ocupa un entero de 2
dígitos).
Los elementos de una matriz se almacenan en posiciones sucesivas de memoria, al igual
que los vectores. En otras palabras podemos decir que se almacenan como vectores
contiguos: una fila de la matriz al lado de la otra, y cada elemento de la fila al lado del
siguiente.

Declaración de matrices
Las matrices se definen en la zona de declaraciones del programa, dentro del bloque de
Tipos estructurados. Para ello se especifica el nombre de la misma seguido de la cantidad
total de filas y de columnas, separadas por coma y encerradas entre corchetes, y luego se
escribe el tipo y precisión de los elementos.
En pseudocódigo:
Programa…..
Tipos estructurados
<nom_matriz>= Arreglo [filas,columnas] : <tipo> //declaro una matriz…//
Variables
<nom_variable>: <nom_matriz> //y luego una variable de tipo//
//matriz, donde alojarla//
Hacer

Fin Hacer
Fin Programa…..
La declaración reserva lugar en la memoria, lo asocia con el nombre de la matriz, pero su
contenido queda indeterminado, como ocurre con las variables. Es necesario hacer una
operación de asignación de valores, para que la matriz tenga elementos.

APLICACIÓN DE ARREGLO BIDIMENSIONAL (MATRIZ)

Diseña un algoritmo en el que guardes las calificaciones de 20 alumnos de las 5 materias


que están cursando en el semestre actual. En el mismo arreglo guarda el promedio final
de cada alumno y su matrícula.
Pseudocódigo:

Entero A[20,7]
Prom = 0
Repetir desde (i=1, i<=20; i=i+1)
Escribe (“Captura la matricula”, i)
Leer (A[i,1])
Repetir desde (j=2, i<=6; j=j+1)
Leer (A[i,j])
Fin Repetir
Fin Repetir
Repetir desde (i=1, i<=20; i=i+1)
Repetir desde (j=2, i<=6; j=j+1)
Prom=prom+(A[i,j])
Fin Repetir
A[i,7]=prom/5
Fin Repetir
Fin

PILAS:

Una Pila es una colección ordenada de elementos en la que se pueden insertar y suprimir
por un extremo, llamado tope. Se conoce como una estructura de datos LIFO (last-in,
firstout), último en entrar, primero en salir.

Las operaciones básicas que podemos realizar en una Pila son:

 Crear pila
 Insertar elementos a la pila push(pila,elemento);
 Eliminar elementos de la pila elemento=pop(pila);
 Determinar si la pila esta vacía bandera=vacia(pila);
 Determinar si la pila está llena bandera=llena(pila);

En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último
objeto apilado (denominado TOS, Top of Stack en inglés). La operación retirar permite la
obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente
(apilado con anterioridad), que pasa a ser el nuevo TOS.

Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato
sobre una pila de platos, y una operación retirar a retirarlo.

Para su representación requieren de otras Estructuras de Datos como Arreglos y Listas.

Al utilizar arreglos para implementar pilas se tiene la limitación de que se debe reservar el
espacio en memoria con anticipación. Una vez dado un máximo de capacidad a la pila no
es posible insertar un número de elementos mayor que el máximo establecido. Si esto
ocurre, en otras palabras si la pila está llena y se intenta insertar un nuevo elemento, se
producirá un error conocido como desbordamiento (overflow).

Otro error que se puede presentar es tratar de eliminar un elemento de un pila vacía. Este
tipo de error se le conoce como subdesbordamiento (underflow).

APLICACIONES DE PILAS

Tratamiento de Expresiones aritméticas

1. AB = Infija

2. AB = posfija

3. AB = Prefija

AB = Infija: Esta notación es Infija porque el operador se encuentra entre los operadores.

AB = posfija: Esta notación es Posfija porque el operador se encuentra después de los
operadores.

AB = Prefija: Esta es una notación Prefija porque el operador se encuentra antes de los
operadores.
Realizar un algoritmo en el cual se realice una operación aritmética utilizando notación posfija.

 Deberíamos poder “recordar” c/operando de la expresión


 Si encontramos un operador
o Los dos últimos operandos recordados son los usados y “olvidados”
o El resultado de la operación, debe ser también “recordado”
 Así, hasta que la expresión termine
PSEUDOCÓDIGO:
Pila s;
PilaVacia(s);
while(no hayamos revisados toda la expresion)
{
simbolo = siguiente elemento
if(simbolo es un operando)
Push(s,simbolo);
else{
operando1 = Pop(s);
operando2 = Pop(s);
valor = resultado de operación simbolo entre operando1 y operando2
Push(s,valor);
}
}
return(Pop(s));

COLAS
Una cola es una colección ordenada de elementos donde la adición de nuevos elementos
tiene lugar en uno de los extremos, denominado “final”, y la remoción de elementos
existentes ocurre en el otro extremo, comúnmente llamado “frente”. Un elemento ingresa a
la cola por el final y espera hasta el momento que un elemento sea eliminado para avanzar
hacia el frente.

El elemento más recientemente agregado en la cola debe esperar al final de la colección.


El elemento que ha permanecido más tiempo en la colección está en el frente. Este principio
de ordenamiento a veces se denomina FIFO (first-in first-out), también conocido como el
primero en llegar es el primero en ser atendido.

El ejemplo más simple de una cola es la fila típica en la que todos participamos de vez en
cuando. Esperamos en una fila para una película, esperamos en la fila de pago en una
tienda de comestibles, y esperamos en la fila de la cafetería (para que podamos extraer de
la pila de bandejas). Las colas son muy restrictivas en el sentido de que sólo tienen un
modo de ingresar a ella y una sola salida. No hay saltos en el medio y no es posible salir
antes de que se haya esperado la cantidad necesaria de tiempo para llegar al frente.

Las operaciones de cola se muestran a continuación.

 Cola() crea una nueva cola que está vacía. No requiere parámetros y devuelve una cola
vacía.
 agregar(item) agrega un nuevo ítem al final de la cola. Requiere el ítem y no devuelve valor.
 avanzar() elimina el ítem del frente de la cola. No requiere parámetros y devuelve el ítem
que se eliminó. La cola es modificada.
 estaVacia() verifica si la cola está vacía. No requiere parámetros y devuelve un valor
booleano.
 tamano() devuelve el número de ítems en la cola. No requiere parámetros y devuelve un
entero.

Ejemplo de operaciones de Cola

Operación de Cola Contenido de la cola Valor devuelto

c.estaVacia() [] True

c.agregar(8) [8]

c.agregar(nuevo) [nuevo,8]

c.agregar(oso) [oso,nuevo,8]

c.agregar(auto) [auto,oso,nuevo,8]

c.tamano() [auto,oso,nuevo,8] 4

c.estaVacia() [auto,oso,nuevo,8] False

c.agregar(66) [66, auto,oso,nuevo,8]

c.avanzar() [66, auto,oso,nuevo] 8

c.avanzar() [66, auto,oso] nuevo

c.tamano() [66, auto,oso] 3


TIPOS DE COLAS

 Colas circulares (anillos): en las que el último elemento y el primero están unidos.

 Colas de prioridad: En ellas, los elementos se atienden en el orden indicado por una
prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se
atenderán de modo convencional según la posición que ocupen. Hay dos formas de
implementación:
1. Añadir un campo a cada nodo con su prioridad. Resulta conveniente mantener
la cola ordenada por orden de prioridad.
2. Crear tantas colas como prioridades haya, y almacenar cada elemento en su
cola.

 Bicolas (o Colas doblemente terminadas): son colas en donde los nodos se pueden
añadir y quitar por ambos extremos; se les llama DEQUE (Double Ended QUEue). Para
representar las bicolas lo podemos hacer con un arreglo circular con Inicio y Fin que
apunten a cada uno de los extremos. Hay variantes:

 Bicolas de entrada restringida: Son aquellas donde la inserción sólo se hace por el final,
aunque podemos eliminar al inicio ó al final.

 Bicolas de salida restringida: Son aquellas donde sólo se elimina por el final, aunque se
puede insertar al inicio y al final.

LISTAS

Es una estructura dinámica, donde el número de nodos en una lista puede variar a medida
que los elementos son insertados y removidos, el orden entre estos se establece por
medio de un tipo de datos denominado punteros, apuntadores, direcciones o referencias
a otros nodos, es por esto que la naturaleza dinámica de una lista contrasta con un arreglo
que permanece en forma constante.
LISTAS ENLAZADAS SIMPLES

Cada elemento de la lista, a excepción del primero, tiene un único predecesor y cada
elemento de la lista, a excepción del último, tiene un único sucesor.

Los nodos, en forma general, constan de dos partes: el campo información y el campo
liga. El primero contendrá los datos a almacenar en la lista; el segundo será un puntero
empleado para enlazar hacia el otro nodo de una lista.

Las operaciones más importantes que se realizan en las estructuras de datos Lista son
las siguientes:

 Búsqueda
 Inserción
 Eliminación
 Recorrido

Un nodo de una lista enlazada simple puede determinar quien se encuentra después de
él pero no puede determinar quien se encuentra antes, ya que solo cuenta con la dirección
del nodo siguiente pero no del anterior.

LISTAS DOBLEMENTE ENLAZADAS

Son listas que tienen un enlace con el elemento siguiente y con el anterior. Una ventaja
que tienen es que pueden recorrerse en ambos sentidos, ya sea para efectuar una
operación con cada elemento o para insertar/actualizar y borrar. Otra ventaja es que las
búsquedas son algo más rápidas puesto que no hace falta hacer referencia al elemento
anterior. Su inconveniente es que ocupan más memoria por nodo que una lista simple.

INSERCION DE ELEMENTOS EN UNA LISTA

Al final de la lista

· Verificar si la lista está vacía

o Si está vacía la lista es decir inicio==null

 Se crea un nuevo nodo o se asigna un nuevo nodo al inicio


 Final se hace que apunte también al inicio ya que es el único
nodo.

o Si ya existe por lo menos un nodo

 Se crea o se asigna un nuevo nodo a fin.sig=nuevo;


 Final se hace que apunte al nuevo nodo ya que ahora sera el
final.

Al inicio de la lista

· Verificar si la lista está vacía

o Si está vacía la lista es decir inicio==null

 Se crea un nuevo nodo o se asigna un nuevo nodo al inicio


 Final se hace que apunte también al inicio ya que es el único
nodo.

o Si ya existe por lo menos un nodo

 Se crea un nodo que se hace que apunte al inicio


nuevo.sig=inicio
 Se hace que inicio ahora apunte al primer elemento que es
nuevo inicio=nuevo

En alguna posición especifica

· Verificar si la lista está vacía o posición es igual a cero

o Si está vacía la lista es decir inicio==null

 Se crea un nuevo nodo o se asigna un nuevo nodo al inicio


 Final se hace que apunte también al inicio ya que es el único
nodo.

o Si ya existe por lo menos un nodo


 Se recorre la lista contando las posiciones de los elementos
dentro de la lista (pos++), además se debe de recorrer
conociendo el nodo anterior y el siguiente con el fin de
reorganizar la lista al insertar un nuevo elemento.
 Si se localiza la posición buscada y siguiente es diferente de
null. if(cont==posi && sig!=null)

· Se crea un nuevo nodo y se hace que apunte al siguiente


nodo y además que el nodo anterior apunte al nuevo
nodo. nuevo.sig=sig y ant.sig=nuevo.

 Si no se localiza la posición (indica que se dio una posición


mayor a la cantidad de elementos, entonces se agrega el
elemento al final de la lista.

ELIMINACIÓN DE ELEMENTOS DE UNA LISTA

Del inicio de la Lista

 Verificar si la lista está vacía

 Verificar si hay un solo nodo

 Si hay un solo nodo se pone ini=fin=null

 Si hay más de un nodo

 El inicio es ahora el siguiente ini=ini.sig

Del final de la Lista

 Verificar si la lista está vacía

 Verificar si hay un solo nodo

 Si hay un solo nodo se pone ini=fin=null

 Si hay más de un nodo


 Se debe recorrer la lista llevando el anterior y el siguiente mientras
que anterior.sig sea diferente del final o del siguiente. (debe de
construir primero el nodo anterior para poder comparar con
siguiente)
 Al llegar al final entonces el anterior se debe de poner como final,
y a final.sig como null

De cierta posición

 Verificar si la lista está vacía

 Verificar si hay un solo nodo

 Si hay un solo nodo se pone ini=fin=null

 Si hay más de un nodo

 Se debe recorrer la lista llevando el anterior, siguiente y el


contador de las posiciones mientras que siguiente sea
diferente de null.
 Si cont==0 entonces se elimina del inicio
 En otro caso si cont==pose y además sig!=null se pone a
anterior.sig la dirección de siguiente.sig para eliminar a
siguiente.
 También hay que verificar si es el último elemento para
ponerlo como final si anterior.sig==null entonces se debe
poner como final. fin=ant;
 Si no se localiza la posición se elimina del final de la lista.

Inserción
Al final de la lista

 Si la lista está vacía

 Se crea el nuevo nodo


 Se pone a inicio a que apunte al nuevo nodo ini=nuevo
 Se pone a final a que apunte al inicio fin=ini

 Si hay por lo menos un nodo


 Se crea el nuevo nodo
 El ultimo nodo en su campo siguiente se hace que apunte al nuevo nodo
fin.sig=nuevo
 El nodo nuevo en su campo anterior se hace que apunte a
fin, nuevo.ant=fin
 Por último se pone a nuevo como final, final=nuevo

Al inicio de la lista

 Si la lista está vacía

 Se crea el nuevo nodo


 Se pone a inicio a que apunte al nuevo nodo ini=nuevo
 Se pone a final a que apunte al inicio fin=ini

 Si hay por lo menos un nodo

 Se crea el nuevo nodo


 El inicio en su campo anterior se hace que apunte al nuevo nodo
ini.ant=nuevo
 El nodo nuevo en su campo siguiente se hace que apunte a
inicio, nuevo.sig=ini
 Por último se pone a nuevo como inicio, ini=nuevo;

En una posición específica

 Si la lista está vacía

 Se crea el nuevo nodo


 Se pone a inicio a que apunte al nuevo nodo ini=nuevo
 Se pone a final a que apunte al inicio fin=ini

 Si hay por lo menos un nodo

 Se crea el nuevo nodo


 Se realiza un recorrido llevando solo un nodo hasta llegar a la posición
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
además cont sea diferente de la posición donde se quiere insertar el
nuevo elemento.

 Al finalizar el recorrido a la posición buscada


 Puede ser que cont se quede con 0
 Entonces debe de insertar el elemento al inicio
 Pero si encontró la posición y cont tiene el mismo valor, además
debe de checar que temp no se quede con
null; cont==posi && temp!=null
 Se crea un nuevo nodo
 Se crea una referencia que apunte al nodo
anterior
 Nodo ant=temp.ant
 Anterior en su campo siguiente se hace que
apunte al nuevo nodo.
 ant.sig=nuevo
 Se hace que nuevo en su campo siguiente se
hace que apunte a temp.
 nuevo.sig=temp
 Se crea la liga para que nuevo en su campo
anterior apunte a anterior
 nuevo.ant=ant
 Pero si la posición es mayor que la cantidad de elementos que
tiene la lista entonces se debe de agregar al final de la lista.

Recorridos

Recorrido a partir del inicio

 Se crea una referencia de Nodo para empezar el recorrido a partir del inicio. Nodo
temp=ini
 Se realiza el recorrido a través de un ciclo mientras que temp!=null

o Se imprime el valor al que hace referencia temporal en ese momento


temp.num

o Se avanza al siguiente elemento de la lista. Temp=temp.sig

Recorrido a partir del final

 Se crea una referencia de Nodo para empezar el recorrido a partir del inicio.
Nodo temp=fin
 Se realiza el recorrido a través de un ciclo mientras que temp!=null

o Se imprime el valor al que hace referencia temporal en ese momento


temp.num

o Se retrocede al elemento anterior en la lista. Temp=temp.ant

Eliminar

 Del inicio de la lista

 Si la lista no está vacía

o Si hay un solo elemento

 ini=fin=-1

o Si hay por lo menos un elemento

 Crear una referencia del nodo que sigue del inicio


 Nodo sig=ini.sig;

 Eliminar la liga del inicio al siguiente elemento


 ini.sig=null
 Poner a siguiente en el campo anterior a null
 Sig.ant=null
 Poner el siguiente como el nodo del inicio.
 Ini=sig

Del final de la lista

 Si la lista no está vacía

o Si hay un solo elemento

 Ini=fin=-1

o Si hay por lo menos un elemento

 Crear una referencia del nodo anterior al final


 Nodo ant=fin.ant
 Poner a null el campo siguiente de anterior
 ant.sig=null
 Eliminar la liga del final en su campo anterior

 Fin.ant=null
 Poner al nodo anterior como final
 Fin=ant

De una posición especifica

 Verificar si la lista no está vacía

o Si hay un solo elemento

 Ini=fin=-1

o Si hay por lo menos un elemento

o Se realiza un recorrido hasta la posición buscada a partir del inicio,


llevando un contador mientras cont!=pos y temp.sig!=null

 Nodo Temp=ini int cont=0

o Si al hacer el recorrido cont==0 entonces se elimina del inicio

o Si el cont==pos y temp.sig!=null entonces se elimina de esa posición

 Se crean referencias del anterior y del siguiente


o Nodo ant=temp.ant, sig=temp.sig
 Se establecen las ligas entre ant y sig
o ant.sig=sig
o sig.ant=ant
 Se eliminan las ligas de temp
o temp.sig=null
o temp.ant=null
 Si no se encuentra la posición se inserta al final

REFERENCIAS BIBLIOGRÁFICAS

Cairo, Osvaldo; Guardati, Silvia. Estructura de Datos, Tercera Edición. Mc Graw Hill, México, 2006.

Joyanes Aguilar, Luis. Fundamentos de Programación. Algoritmos y Estructuras de Datos. Tercera Edición
2003. McGraw – Hill.

Guardati, Silvia. Estructura de Datos Orientada a Objetos Algoritmos con C++, Primera Edición. Prentice
Hall, México, 2007.

Mark Allen Weiss. Estructura de datos en Java. Ed. Addison Wesley.

C. Thomas Wu. Introducción a la Programación Orientada a Objetos con Java. Ed. Pearson Educación.

Decker, Hirshfield. Programación con Java. Ed. International Thomson Editores.

Roman Martinez, Elda Quriga. Estructura de Datos Referencia practica con orientación a objetos. Ed.
Thomson, Mexico, 2004.

Das könnte Ihnen auch gefallen