Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Company
LOGO
Agenda
1. Punteros
2. Estructuras autoreferenciadas
3. Asignacin dinmica de memoria
4. Listas enlazadas
Punteros
Su valor es una
direccin de
memoria.
Las variables
normales contienen
un valor especfico.
Los punteros
almacenan la
direccin de una
variable que tiene
un valor especfico.
Punteros
Declarar punteros
Sintaxis
Definicin
Punteros y operadores
Operador
de
direccin
(&)
Ejemplo
Punteros y operadores
Punteros y operadores
Operador de
indireccin(*)
Ejemplo
Para asignar:
*un_puntero <- 7;
//Ahora el valor de un_numero es 7
El ejemplo
Punteros y Estructuras
Operador
punto (.)
Operador
flecha (<-)
Equivalente
a:
Escribir (*puntero_carta).signo;
Pilas
Colas
Inserciones y Inserciones
eliminaciones
en la parte
slo en la
posterior y
parte superior.
eliminaciones
en la parte
superior.
rboles
binarios
Bsqueda y
ordenamiento
de alta
velocidad y
eliminacin de
duplicados
eficiente
Estructura auto-referenciada
Contienen un
puntero a otra
estructura
Esta otra
estructura es del
mismo tipo.
Lo que permite
formas
estructuras de
datos.
Pueden
enlazarse
mutuamente.
Estas
estructuras
terminan con un
puntero NULO.
Estructura auto-referenciada
Estructura auto-referenciada
Sintaxis
Estructura nodo
Definir dato como Entero;
Enlace
Asignacin dinmica de
memoria
Definicin
Funcin
reservar()
reservar(puntero_nodo);
Funcin
liberar()
Listas enlazadas
Coleccin lineal de estructuras autoreferenciadas, llamadas nodos, conectadas
por enlaces mediante punteros.
Se acceden
Los
El ltimo
mediante
siguientes
elemento
un puntero
nodos se
tiene como
al primer
acceden a
enlace un
elemento
travs de
puntero
de la lista. los enlaces.
NULO.
Listas enlazadas
A diferencia de un
vector, soporta un
nmero indeterminado
de elementos.
A diferencia de un
vector, es fcil
mantenerla ordenada.
Nosotros trabajaremos
con LISTAS
ENLAZADAS SIMPLES
Comienzan con un
puntero al primer nodo,
terminan en puntero
nulo y se recorren en
una direccin
Un problema
Disee un algoritmo que permita
manipular una lista de caracteres.
Plan de accin
El usuario ingresa una opcin
Estructura jerrquica
Mdulo
Principal
Insertar
carcter en
orden
Eliminar
carcter
Verificar que
lista est
vaca
Mostrar
contenido de
la lista
Definir Estructuras
Nodo en Estructura nodo_lista
Lista
Enlazada
Definir caracter como
Caracter;
Definir *puntero_siguiente
como nodo_lista;
FinEstructura
Mdulo Principal
Proceso principal
Definir *puntero_inicio como nodo_lista;
Insertar elemento
Reservar memoria para el nuevo nodo
Insertar elemento
Insertar elemento
SubProceso insertar (puntero_inicio por Referencia, caracter por Valor)
Definir *puntero_nuevo como nodo_lista;
Definir *puntero_previo como nodo_lista;
Definir *puntero_actual como nodo_lista;
reservar(puntero_nuevo);
puntero_nuevo->caracter <- caracter;
puntero_nuevo->puntero_siguiente <- NULO;
puntero_previo <- NULO;
puntero_actual <- puntero_inicio;
Mientras (puntero_actual <> NULO & caracter > puntero_actual->caracter) Hacer
puntero_previo <- puntero_actual;
Eliminar elemento
La eliminacin implica remover los
enlaces al nodo a eliminar
Al eliminar, necesitamos liberar la
memoria reservada para el nodo
eliminado.
Eliminar elemento
Eliminar elemento
Funcion caracter_eliminado <- suprimir (puntero_inicio por Referencia, caracter por Valor)
Definir *puntero_previo, *puntero_actual,
*auxiliar
como nodo_lista;
Mostrar contenido
SubProceso mostrar_lista(puntero_actual)
Si puntero_actual = NULO Entonces
Escribir "La lista est vaca";
Sino
Mientras puntero_actual <> NULO Hacer