Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LISTAS ENLAZADAS
PUNTEROS
Un puntero o apuntador es una estructura simple que almacena la direccin de memoria de la variable a la cual apunta. Constituyen la base para la construccin de las estructuras dinmicas.
Ejemplo:
Variable entera x valor real del dato 16 Direccin de memoria FFF4
*p
&p
Significa que: p : es un puntero entero que apunta a la variable x *p = 16, se refiere al valor de la variable &p = FFF4, se refiere a la direccin de memoria.
como
Qu estamos haciendo aqu?, Primero, estamos reservando una zona de memoria contigua, de la siguiente manera:
A = 1000 Direcciones de memoria Datos de A
10
12
18
REPRESENTACIN GRFICA
De una lista enlaza simple con datos:
Donde: p = puntero auxiliar o temporal. dato(p) = B, valor del dato apuntado por p. siguiente(p) = puntero que sigue despus de p, y apunta al siguiente nodo.
POSICIONES DE MEMORIA
Los elementos de una almacenar en posiciones porque el puntero es encuentra el elemento de
primero
Direcciones de 1000 1001 1002 1003 1004 1005 memoria Datos de la L.E.S. A B C D
En grfica
En el DDF:
primero = NULO
2) Ingresar el dato en el nuevo nodo, haciendo que dato(p) capture al dato ingresado
En grfica: En el DDF: leer: dato(p)
3) Preguntamos: primero = NULO? Respuesta: S - Hacer que el puntero primero, apunte al nuevo nodo. - Hacer que el puntero sig(p), apunte a NULO.
En grfica: En el DDF: primero = p sig(p) = NULO
4) Resultado final:
2) Ingresar el dato en el nuevo nodo, haciendo que dato(p) capture al dato ingresado.
En grfica: el DDF: leer: dato(p)
3) Preguntamos: primero = NULO? Respuesta: No - Hacer que un puntero auxiliar q, apunte al primero. - Hacer que un puntero auxiliar w, apunte a sig(q).
En grfica: En el DDF: q = primero w = sig(q)
4) Preguntamos: dato(p) < dato(q)? Respuesta: S - Hacer que sig(p) apunte a primero. - Hacer que primero apunte al nuevo nodo.
En grfica: En el DDF:
sig(p) = primero
primero = p
5) Resultado final:
2) Ingresar el dato en el nuevo nodo, haciendo que dato(p) capture al dato ingresado.
En grfica: En el DDF: leer: dato(p)
3) Preguntamos: primero = NULO? Respuesta: No - Hacer que un puntero auxiliar q, apunte al primero. - Hacer que el puntero auxiliar w, apunte a sig(q).
En grfica: En el DDF: q = primero w = sig(q)
4) Preguntamos: dato(p) < dato(q)? Respuesta: No Preguntar: w NULO? Respuesta: S Mientras es S, preguntamos: dato(p) < dato(w)? Respuesta: No - Hacer que el puntero q, apunte a w. - Hacer que el puntero w, apunte a sig(q)
En grfica: En el DDF: q=w w = sig(q)
Los punteros q y w, avanzan hasta que la respuesta de la pregunta w NULO?, sea No, entonces se procede a insertar el elemento al final de la lista, de la siguiente manera: - Hacer que sig(q), apunte al nuevo nodo. - Hacer que sig(p), apunte a NULO.
En grfica: En el DDF: sig(q) = p sig(p) = NULO
5) Resultado final:
2) Ingresar el dato en el nuevo nodo, haciendo que dato(p) capture al dato ingresado.
En grfica: En el DDF: leer: dato(p)
3) Preguntamos: primero = NULO? Respuesta: No - Hacer que un puntero auxiliar q, apunte al primero. - Hacer que el puntero auxiliar w, apunte a sig(q).
En grfica: En el DDF: q = primero w = sig(q)
4) Preguntamos: dato(p) < dato(q)? Respuesta: No Preguntar: w NULO? Respuesta: S Mientras es S, preguntamos: dato(p) < dato(w)? Respuesta: No - Hacer que el puntero q, apunte a w. - Hacer que el puntero w, apunte a sig(q)
En grfica: En el DDF: q=w w = sig(q)
Los punteros q y w, avanzan hasta que la respuesta de la pregunta dato(p) < dato(w)?, sea S, entonces se procede a insertar el elemento en el intermedio respectivo de la lista, de la siguiente manera: - Hacer que sig(p), apunte a w. - Hacer que sig(q), apunte al nuevo nodo.
En grfica: En el DDF: sig(p) = w sig(q) = p
5) Resultado final:
Ejemplo:
Ejemplo:
Ejemplo:
Ejemplo: