You are on page 1of 2

PRÁCTICA 1

(Listas en C)

Para poder realizar las prácticas de este curso, es necesario que aprendas a programar en C. Por ello
esta primera práctica tiene la misión de que tengas algo de experiencia en la programación en C, para
ello tendrás que implementar una biblioteca de listas. Dentro de la carpeta src se encuentran los
siguientes archivos:
• lista.h: Contiene las definiciones de las estructuras para una lista así como la firma de las
funciones que debes implementar.
• lista.c: En este archivo debes implementar las funciones que se piden en lista.h, algunas de ellas
ya se encuentran implementadas (lista_inicializa, lista_imprime, lista_obten) mientras que otras
solo contienen un return para que el archivo de pruebas compile y corra.
• main.c: Contiene una pequeña interfaz de consola para que puedas probar las funciones que
debes implementar.
• prueba.c: contiene un código de prueba que hace uso de algunas funciones de lista, si
implementaste correctamente todas las funciones de lista la salida del archivo debe ser:
{9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
{100, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
{100, 9, 8, 7, 6, 5, 4, 3, 2, 1, 100, 0}
{100, 9, 8, 7, 6, 5, 3, 2, 1, 100, 0}
{9, 8, 7, 6, 5, 3, 2, 1, 0}
{0, 1, 2, 3, 5, 6, 7, 8, 9}
{1, 3, 6, 8}
{1, 3, 6, 8}
{1, 3, 6, 8}
8

El archivo Makefile contiene una serie de reglas para compilar y correr el programa, las reglas del
Makefile son las siguientes:

make complie: Compila el programa.


make run: Ejecuta la interfaz en consola.
make prueba: Ejecuta el código de prueba.

REQUERIMIENTOS
Implementar las funciones que se encuentran en el archivo lista.h, este es un listado con cada función
la descripción de que debe hacer cada una:

FUNCIÓN DESCRIPCIÓN
int lista_inicializa(lista* l) Inicializa la lista L. Si la inicialización fue posible
regresa 1 y 0 en otro caso.
int lista_push_front(lista* l, int elem) Inserta el elemento ELEM en el frente de la lista
L. El frente de la lista se considera el campo
INICIO de la estructura LISTA. Si el elemento se
logro insertar de forma correcta se regresa 1.
nodo* lista_pop_front(lista* l) Elimina el elemento que se encuentra en frente de
la la lista L. El nodo eliminado se regresa y en
caso de no hacerse la eliminación se regresa
NULL.
int lista_inserta(lista* l, int indice, int elem) Elimina el elemento que se encuentra en la
posición INDICE en la lista L. EL nodo eliminado
se regresa, en caso de no poderse eliminar se
regresa NULL.
nodo* lista_elimina(lista* l, int indice) Elimina el elemento que se encuentra en la
posición INDICE en la lista L. EL nodo eliminado
se regresa, en caso de no poderse eliminar se
regresa NULL.
nodo* lista_obten(lista* l, int indice) Obtiene el elemento en la posicion INDICE de la
lista L (Sin eliminar). Si indice incorrecto se
regresa NULL.
int lista_es_vacia(lista* l) Si la lista es vacía regresa 1, sino regresa 0.
void lista_imprime(lista* l) Imprime en la consola el contenido de la lista L.
lista* lista_reversa(lista* l) Regresa una nueva lista con la reversa de la lista
L.

La practica se entregara en equipos de 3 tres personas. Se debe enviar un archivo comprimido que
tenga de nombre el numero de cuenta de uno de los integrantes del equipo, por ejemplo
302179769.tar.gz, al descomprimir el archivo debe de encontrarse la siguiente estructura de
directorios:

practica1/
|-------- README.txt
|-------- src/

El archivo README.txt debe contener el nombre de los integrantes del equipo, mientras que la carpeta
src debe contener los archivos fuentes de su programa. El archivo comprimido debe enviarse a la
dirección de correo sofciencias@gmail.com con el asunto PRACTICA1.

Nota: Para esta práctica solo es necesario que en el src se encuentre el archivo lista.c, pues los demás
archivos en principio no deben de ser modificados.

You might also like