lenguaje c
Introducción a la Computación
Clase 19
Patricia Borensztejn
Vectores estáticos y dinámicos
• Ya hemos visto como crear estáticamente
vectores de tamaño fijo:
– intvector[100]
• Y como crear vectores dinámicos, es decir
cuyo tamaño lo especificamos en tiempo de
ejecución:
– int *vector
– vector=malloc(tamaño*sizeof(tipo))
Listas enlazadas en C
• Ahoralo que queremos es armar un vector
añadiendo un elemento por vez, en la medida
que lo vayamos necesitando.
• Queremos algo asi como lo que hace Python,
• ¿Como resolverlo en C?
Listasenlazadas
• Tendremos que ir agregando elementos que
contengan un puntero al próximo elemento:
• O sea que, cada elemento está formado por :
– Un elemento del tipo deseado (int)
– Un puntero alpróximo, o null si es el último.
Listas enlazadas
• Cada elemento, que llamaremos «nodo» estará
definido por un struct (o registro) así:
• Hay dos elementos en el registro:
– Un elemento llamadoinfo de tipo entero
– Un puntero al próximo nodo
• ¡Observemos que hay un toque de recursividad
en la definición!
Listas enlazadas
• Definimos la lista inicialmente vacía así:
Adición denodos
• Queremos agregar un nodo a la lista vacía :
Operador ->
• El operador -> reemplaza el uso del operador * junto
con el operador .
• lista no es una variable de tipo stuct, sino unavariable
de tipo puntero a struct.
• Para acceder al campo info del struct nodo, debemos
hacer:
– *(lista).info=8
O bien:
– lista->info=8
• El operador ->se llama selector indirecto, mientras queel operador . se llama selector directo
Añadimos otro elemento por la cabeza
• Queremos añadir otro elemento a la lista:
¡Así no!
Añadimos un elemento por la cabeza
• Necesitamos unavariable auxiliar
aux=lista;
lista=malloc(sizeof(struct Nodo));
lista->info=3
lista->sig=aux
Añadimos elementos por la cola
• Ahora queremos que el nuevo elemento (el 2)
se agregue al...
Regístrate para leer el documento completo.