lenguaje c

Páginas: 3 (550 palabras) Publicado: 23 de diciembre de 2013
Listas dinámicas en 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...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Lenguaje C#
  • LENGUAJE C
  • Lenguaje c
  • Lenguaje C
  • Lenguaje c
  • lenguaje c
  • lenguaje c
  • Lenguaje c

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS