Title: Dise
1Diseño de algoritmosListas Enlazadas
Claudio Gutiérrez-Soto.
2Ejemplo
- void ajustar(registro pt)
-
- pt-gtnombreJosé
- pt-gtno_cuenta9999
- pt-gttipo_cuentaR
- pt-gtsaldo99.99
- return
includeltstdio.hgt typedef struct char
nombre int no_cuenta char tipo_cuenta
float saldo registro void ajustar(registro
pt) main() registro clienteLázaro,3333,A
,33.33 ajustar(cliente)
3Estructuras Autorreferenciadas
- A veces es deseable incluir dentro de una
estructura un miembro que sea un puntero a este
tipo de estructura. En términos generales esto
puede ser expresado como - struct marca
- Miembro 1
- Miembro 2
-
- struct marca nombre
4Estructuras Autorreferenciadas
- La estructura no tiene un tamaño predefinido por
lo que en general es más óptimo en cuanto a
espacio. Además es simple de manipular por los
punteros.
5Estructuras Autorreferenciadas
- La idea básica de una estructura de datos
enlazada es que cada componente dentro de la
estructura incluye un puntero indicando donde
está el siguiente componente.
6Estructuras Autorreferenciadas
- También existen otras estructuras
autorreferenciadas como los árboles. Los cuales
pueden ser binarios (2 nodos) o n-arios.
7Estructuras Autorreferenciadas
- En el caso de una lista enlazada, la estructura
principal puede ser vista como sigue - struct Lista
- miembro 1
- miembro 2
- .
- struct Lista sgte
-
8Estructuras Autorreferenciadas
- Para el caso de una lista que almacena números
enteros, su respectiva estructura sería - struct Lista
- int dato
- struct Lista sgte
-
9Estructuras Autorreferenciadas
- Para el caso de un árbol binario que almacena
números enteros, su respectiva estructura sería - struct arbol
- int dato
- struct arbol izq
- struct arbol der
-
-
10Estructuras Autorreferenciadas
- Para el caso de un árbol N-ario que almacena
números enteros, su respectiva estructura sería - define N 5
- struct arbol
- int dato
- struct arbol HijosN
-
11Estructuras Autorreferenciadas
- Para todas estas estructuras, hay que definir las
funciones de inserción, eliminación y otros.
12Ejemplo de una Lista Enlazada
- includeltstdio.hgt
- includeltstdlib.hgt
- define NULL 0
- struct Lista
- int dato
- struct Lista sgte
-
- typedef struct Lista Lista
- typedef Lista Enlace
- Enlace HeadNULL
- Enlace insertar(Enlace nodo,int dato)
- void imprimir(Enlace nodo)
- main()
-
- int n,i,dato
- printf("Ingrese cuantos elementos desea
agregar\n") - scanf("d",n)
- for(i0iltni)
-
Enlace insertar(Enlace nodo,int dato)
if(nodoNULL) nodo(Enlace)malloc(sizeof(Lis
ta)) nodo-gtdatodato nodo-gtsgteNULL
else nodo-gtsgteinsertar(nodo-gtsgte,dato)
return(nodo) void imprimir(Enlace nodo)
if(nodo!NULL) printf(" dato-gt d
\n",nodo-gtdato) imprimir(nodo-gtsgte)
else printf("Null")
13Preguntas?