Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Leonardo Yáñez Tarea6 Estructura
Leonardo Yáñez Tarea6 Estructura
Estructura de Datos
Instituto IACC
16 de diciembre de 2019
Desarrollo
1. Un inspector de un tren está indagando si el pasajero del asiento 23a está en el vagón de la
imagen, para validar el proceso el inspector deberá consultar el ticket del pasajero. Indique
qué operación de listas doblemente enlazadas está realizando el inspector. Explique con sus
palabras y aplicando los conceptos tratados en los contenidos, la forma en la cual se
desarrolla esta operación.
Para este caso nos encontramos con la operación BÚSQUEDA, ya que el inspector necesita
localizar un nodo (para este caso un pasajero con ticket), en este caso se muestra que la búsqueda
del nodo que se requiere puede realizarse en ambas direcciones, el fin es encontrar el elemento
de la lista doblemente enlazada que se requiere. En este tipo de listas la verificación se puede
realizar tanto de inicio a final como viceversa, debido a que el nodo que se solicita encontrar
(23a) ya está estipulado. Para los fines de realizar la comprobación del ticket referente (en este
caso) al pasajero del 23a en este vagón, debe realizar el recorrido de búsqueda del asiento en sí.
2. Realice una tabla comparativa entre listas enlazadas y listas doblemente enlazadas,
20 entre el nodo 12 y el nodo 57. Explique paso a paso cómo se realiza el proceso.
Primero: Debemos crear nuestro nuevo NODO al que se le dará un valor (Dato) que en
este caso es 20. Como es una lista doblemente enlazada, nuestro nuevo nodo se compone,
20
debemos ubicar nuestro nodo en un lugar que le permita conectar con los otros nodos (el
20
12 57 95
Tercero: Procedemos a conectar los punteros, en este apartado se enlazan los datos entre
sí, el dato 20 se enlaza con el dato anterior que corresponde al nodo con valor 12, además
se enlaza con el nodo siguiente que se detalla como un nodo con valor 57.
20
12 57 95
Cuarto: La forma final de la lista con el nuevo componente sería, donde se puede
verificar que los nodos se encuentran con el mismo orden, pero con el dato de valor 20
12 20 57 95
Proceso para la inserción de un nuevo elemento (como ejemplo, no es a partir del ejemplo
anterior)
void insertar (tElemento x, tPosicion p, tLista l)
Argumentos:
l: Es modificada.
p: Es una posición válida para la lista l.
x: Dirección válida de un elemento del tipo T con que se instancia la lista, distinta de NULL.
Efecto: Inserta elemento x en la posición p de la lista l desplazando todos los demás elementos
en una posición.
En este ejemplo se procede a eliminar un elemento de la lista
tLista Crear()
{
tLista l;
l = (tLista)malloc(sizeof(tipocelda));
if (l == NULL)
Error("Memoria insuficiente.");
l->siguiente = l->anterior = l;
return l;
}
return l->siguiente;
}
return l;
}
nuevo = (tPosicion)malloc(sizeof(tipocelda));
if (nuevo == NULL)
Error("Memoria insuficiente.");
nuevo->elemento = x;
nuevo->siguiente = p;
nuevo->anterior = p->anterior;
p->anterior->siguiente = nuevo;
p->anterior = nuevo;
}
if (*p == l){
Error("Posicion fin(l)");
}
q = (*p)->siguiente;
(*p)->anterior->siguiente = q;
q->anterior = (*p)->anterior;
free(*p);
(*p) = q;
}
if (p == l){
Error("Posicion fin(l)");
}
return p->elemento;
}
if (p == l){
Error("Posicion fin(l)");
}
return p->siguiente;
}
if (p == l->siguiente){
Error("Posicion primero(l)");
}
return p->anterior;
}
p = primero(l);
encontrado = 0;
while ((p != fin(l)) && (!encontrado))
if (p->elemento == x)
encontrado = 1;
else
p = p->siguiente;
return p;
}
Bibliografía
http://edatosucb.galeon.com/Exposiciones.htm
http://decsai.ugr.es/~jfv/ed1/tedi/cdrom/docs/ldoble.html