// La mitad del codigo es de mi profesor que no lo da como una base.
Codigo : 92-ma-heredia-tad-lista.c
Código:
#include "92-ma-heredia-tad-lista.h"
#include <stdio.h>
#include <stdlib.h>
Lista listaNew(){
Lista lista;
lista= (Lista) malloc( sizeof( struct nodoStruct ) );
if ( lista == NULL ) return NULL;
lista->siguiente= NULL;
return ( lista );
}
int
listaVacia(Lista lista){
return ( lista->siguiente == NULL );
}
int
listaInsertarPrimero(Lista lista, Dato dato){
Nodo nodoNuevo;
nodoNuevo= (Nodo) malloc( sizeof( struct nodoStruct ) );
if ( nodoNuevo == NULL ) return 1;
nodoNuevo->dato= dato;
nodoNuevo->siguiente= lista->siguiente;
lista->siguiente= nodoNuevo;
return 0;
}
int
listaSuprimirPrimero(Lista lista){
Nodo nodoAux;
if ( listaVacia(lista) ) return 1;
nodoAux= lista->siguiente;
lista->siguiente= nodoAux->siguiente;
free(nodoAux);
return 0;
}
Dato listaObtenerValorPrimero(Lista lista){
Dato datoAux;
if ( listaVacia(lista) ) return ( datoAux ); //critico
return ( lista->siguiente->dato );
}
int listaDestroy(Lista lista){
while ( !listaVacia(lista) )
listaSuprimirPrimero(lista);
free(lista);
return 0;
}
int listaMostrar(Lista lista){
Nodo nodo;
nodo= lista->siguiente;
while (nodo!= NULL){
printf(" %d ",nodo->dato);
nodo= nodo->siguiente;
}
//critico
return 0;
}
int
listaInsertarUltimo(Lista lista, Dato dato){
Nodo nodoAux;
Nodo nodoNuevo;
nodoAux= lista;
while (nodoAux->siguiente != NULL)
nodoAux= nodoAux->siguiente;
nodoNuevo= (Nodo) malloc( sizeof( struct nodoStruct ) );
if ( nodoNuevo == NULL ) return 1;
nodoNuevo->dato= dato;
nodoNuevo->siguiente= NULL;
nodoAux->siguiente= nodoNuevo;
return 0;
}
int
listaSuprimirUltimo(Lista lista){
Nodo nodoAux;
if (listaVacia( lista )) return 1;
nodoAux= lista;
while (nodoAux->siguiente->siguiente!= NULL)
nodoAux= nodoAux->siguiente;
free(nodoAux->siguiente);
nodoAux->siguiente= NULL;
return 0;
}
Dato listaObtenerValorUltimo(Lista lista){
Dato datoAux;
Nodo nodoAux;
if ( listaVacia(lista) ) return ( datoAux ); //critico
nodoAux= lista;
while (nodoAux->siguiente != NULL)
nodoAux= nodoAux->siguiente;
return ( nodoAux->dato );
}
codigo : 92-ma-heredia-tad-lista.h
[code]#ifndef MA_HEREDIA_92_TAD_LISTA_H
#define MA_HEREDIA_92_TAD_LISTA_H 1
typedef int *Dato;
struct nodoStruct{
Dato dato;
struct nodoStruct *siguiente;
};
typedef struct nodoStruct *Nodo;
typedef struct nodoStruct *Lista;
Lista listaNew();
int listaInsertarPrimero(Lista lista, Dato dato);
int listaSuprimirPrimero(Lista lista);
int listaVacia(Lista lista);
Dato listaObtenerValorPrimero(Lista lista);
int listaMostrar(Lista lista);
int listaDestroy(Lista lista);
int listaInsertarUltimo(Lista lista, Dato dato);
int listaSuprimirUltimo(Lista lista);
Dato listaObtenerValorUltimo(Lista lista);
int listaIncluye(Lista lista, Dato dato);
int listaDeCanciones(Lista lista);
#endif
int
listaIncluye(Lista lista, Dato dato){
Nodo nodoAux;
if (listaVacia( lista )) return 0;
nodoAux= lista;
while ( (nodoAux->siguiente != NULL) && (nodoAux->siguiente->dato != dato) )
nodoAux= nodoAux->siguiente;
return ( !(nodoAux->siguiente == NULL) );
}
Codigo : 92-ma-heredia-tad-lista-test.c
Código:
#include "92-ma-heredia-tad-lista.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int reproductor(Lista lista,Dato contador);
int Tracklist(Lista lista);
int menu(Lista lista,Dato contador);
int cargando(Lista lista);
int main(){
Lista lis;
int contador;
Dato contadores;
contadores=&contador;
system("clear");
cargando(lis);
for (;;){
system("clear");
for (contador=0;contador==contador;){
lis=listaNew();
reproductor(lis, contadores);
Tracklist(lis);
listaDeCanciones(lis);
contador++;
menu(lis, contadores);
}
}
return 0;
}
int listaDeCanciones(Lista lista){
int num;
do{
printf("\n\t\tEscribe el tema deseado a escuchar : ");
scanf("%d",&num);
printf("\n\n\t\tEl tema selecionado es : ");
switch (num){
case 1 : printf("1.Limosna De Amor\n");
break;
case 2 : printf("2.Adios, Adios\n");
break;
case 3 : printf("3.Vacaciones\n");
break;
case 4 : printf("4.Enfermo De Amor\n");
break;
case 5 : printf("5.Que Bonita Eres\n");
break;
case 6 : printf ("6.La Paya\n");
break;
case 7 : printf ("7.Sin Ti No Puedo Estar\n");
break;
case 8 : printf ("8.Ven Por Favor\n");
break;
default : printf("No existe la cancion inserte de nuevo : ");
}
}while(num<0||num>8);
return 0;
}
int reproductor(Lista lista,Dato contador){
printf("\t\t\tReproductor Winump 3.02\n\n");
printf("\t\tTemas escuchados : %d",(*contador));
printf("\n\t\tArtista : Los Chungitos\n");
printf("\n\t\tDisco : Limosna de amor\n");
printf("\n\n\t\tTracklist\n");
return 0;}
int Tracklist(Lista lista){
printf("\n\t\t1.Limosna De Amor");
printf("\n\t\t2.Adios, Adios");
printf("\n\t\t3.Vacaciones");
printf("\n\t\t4.Enfermo De Amor");
printf("\n\t\t5.Que Bonita Eres");
printf("\n\t\t6.La Paya");
printf("\n\t\t7.Sin Ti No Puedo Estar");
printf("\n\t\t8.Ven Por Favor\n");
return 0;}
int menu(Lista lista,Dato contador){
printf("\n\t\tAbriendo. . .\n\n");
sleep(3);
printf("\t\t***********************WINUMP***********************\n");
printf("\t\tW W\n");
printf("\t\tI I\n");
printf("\t\tN N\n");
printf("\t\tU TEMA ESCUCHADOS : %3d U\n",(*contador));
printf("\t\tM M\n");
printf("\t\tP P\n");
printf("\t\t***********************WINUMP***********************\n");
sleep(10);
system("clear");
return 0;}
int cargando(Lista lista){
printf("\t\t%s\n"," ,+? ");
printf("\t\t%s\n"," ,I?,, ");
printf("\t\t%s\n"," ??~~, , ");
printf("\t\t%s\n"," =~~=~, ");
printf("\t\t%s\n"," =+~~~=, ");
printf("\t\t%s\n"," =+~~~~~: ");
printf("\t\t%s\n"," ==~===~~ ");
printf("\t\t%s\n"," ~?++++===:, ");
printf("\t\t%s\n"," :?=???+++$7777$$$7+ ");
printf("\t\t%s\n"," :?+I???????++++++=++: ");
printf("\t\t%s\n"," :?+??WINUMP 3 02++++= ");
printf("\t\t%s\n"," =?I?I?I????????+???= ");
printf("\t\t%s\n"," ~=+++++=+=??+?I???: ");
printf("\t\t%s\n"," ,+?II??I?, ");
printf("\t\t%s\n"," =?IIII?: ");
printf("\t\t%s\n"," ?III?+: ");
printf("\t\t%s\n"," ~III?~ ");
printf("\t\t%s\n"," ?II?=, ");
printf("\t\t%s\n"," =?I+ , , ");
printf("\t\t%s\n"," ??, ,,,,:::, ");
printf("\t\t%s\n"," EJECUTANDO PROGRAMA ");
sleep(8);
return 0;}
Makefile : makefile
Código:
CC= gcc
CFLAGS= -Wall -lm
#CC_DEFINES=
#CC_INCLUDES=
92-ma-heredia-tad-lista.o: 92-ma-heredia-tad-lista.c 92-ma-heredia-tad-lista.h
$(CC) $(CFLAGS) -c 92-ma-heredia-tad-lista.c
92-ma-heredia-tad-lista-test.o: 92-ma-heredia-tad-lista.h 92-ma-heredia-tad-lista-test.c
$(CC) $(CFLAGS) -c 92-ma-heredia-tad-lista-test.c
92-ma-heredia-tad-lista-test.sh: 92-ma-heredia-tad-lista.o 92-ma-heredia-tad-lista-test.o
$(CC) 92-ma-heredia-tad-lista.o 92-ma-heredia-tad-lista-test.o $(CFLAGS) -o 92-ma-heredia-tad-lista-test.sh
Gracias [/code]