[Utu-emt-prog2-info] listas

Federico Kouyoumdjian fedekp en autistici.org
Jue Ago 4 11:58:43 CEST 2011


fuente: transparencias de Gonzalo Pastor, 
http://en.wikipedia.org/wiki/List_%28computing%29 y producción propia

Listas

Las listas se usan para muchas cosas en la vida real (de materias, de 
palabras del diccionario, de letras de una palabra, de elementos de un 
conjunto) por lo tanto nos interesa poder representarlas en la computadora.

Para representarlo mediante una estructura estática se usa un array y un 
indice que indica la cantidad de elementos.

Cada elemento que insertemos en la Listas se hará de forma ordenada, 
mediante algún criterio. Si recorremos la lista todos los datos 
aparecerán ordenados.

Declaración

tipo lista[MAX_TAMANO];
int elementos; //indica cuantos elementos tiene la lista

ejemplo: int lista[10];
	   int elementos;


Crear lista vacía

elementos=0;


Insertar

Cuando agregamos datos debemos tener en cuenta 3 casos:

1. Insertar un elemento "e" en la primera posición de una lista
	if (elementos==10)
		printf("no hay lugar");
	else
	{
		for (int i=elementos;i>0;i--)
			lista[i]=lista[i-1];
		lista[0]=e;
		elementos++;
	}
2. Insertar un elemento "e" en la última posición de una lista
	if (elementos==10)
		printf("no hay lugar");
	else
	{

		lista[elementos]=e;
		elementos++;
	}
3. Insertar un elemento "e" a continuación de un nodo "n" cualquiera de 
una lista
	if (elementos==10)
		printf("no hay lugar");
	else
	{
		for (int i=elementos;i>n+1;i--)
			lista[i]=lista[i-1];
		lista[n+1]=e;
		elementos++;
	}	

Borrar

Es el proceso inverso al insertado. Por lo tanto existen los mismos 3 
casos anteriores, pero a la inversa. A esto se le agrega la complejidad 
de que debe ingresarse y buscar el dato a eliminar.

Quitar un elemento "e" de una lista

if (elementos==0)
	printf("no hay elementos");
else
{
	int i=0;
	while (i<elementos && lista[i]!=e)
	{
		i++;
	}
	for (int h=i;h<elementos-1;h++)
		lista[h]=lista[h+1]; 		
	}
	if (i<elementos)
		elementos--;
}

Un caso particular es el vaciado donde se borran todos los nodos.

elementos=0;

Ejercicios:

1.Hacer una función que devuelva la cantidad de elementos de una lista.
2.Hacer una función que devuelva el quinto elemento de una lista, en 
caso de que la lista tenga menos de 5 elementos debe devolver el último 
elemento de la lista.
3.Crear una lista con los elementos 1, 4, 5, 8
4.Hacer una función que devuelva el menor elemento de una lista de enteros.
5.Hacer una función que devuelva la suma de los elementos de la lista.
6.Quitar el elemento 5 de la lista del ejercicio 3.
7.Vaciar la lista del ejercicio 3.



Más información sobre la lista de distribución Utu-emt-prog2-info