Baixe o app para aproveitar ainda mais
Prévia do material em texto
/* Lista duplamente encadeada simulando uma lista de reproducão, onde tem inserir, excluir e reproduzir(imprimr) música. * Aluno: Thiago Mendes da Silva. * Acadêmico de Ciência da Computação. * Universidade Federal da Fronteira Sul. */ #include <stdlib.h> #include <stdio.h> #include <string.h> struct lista { char musica[50], autor[30]; struct lista *next, *prev; }; typedef struct lista Lista; Lista *insere(Lista *l){ Lista *ultimo, *new; new =(Lista *)malloc(sizeof(Lista)); if(l==NULL){ printf("Informe o nome da musica: "); //__fpurge(stddin); fflush(stdin); gets(new->musica); printf("Informe o nome do autor: "); //__fpurge(stddin); fflush(stdin); gets(new->autor); new->next=NULL; new->prev=NULL; l = new; ultimo = new; return l; } else{ for(ultimo = l; ultimo -> next != NULL; ultimo = ultimo -> next); printf("Informe o nome da musica: "); //__fpurge(stddin); fflush(stdin); gets(new->musica); printf("Informe o nome do autor: "); //__fpurge(stddin); fflush(stdin); gets(new->autor); new->next=NULL; ultimo->next=new; new->prev=ultimo; return l; } } Lista *retira(Lista *l, char MUSICA[50]){ Lista *p; int esta = 0; if(l==NULL){ printf("Lista reproducao vazia"); } for(p=l;p!=NULL;p=p->next){ if(strcmp(p->musica, MUSICA) == 0){ esta = 1; break; } } if(esta == 0){ printf("Musica nao encontrada"); return l; } else{ printf("Musica encontrada"); } if(p->prev==NULL && p->next==NULL){ l=NULL; return l; } else{ if(p->prev==NULL){ p=p->next; p->prev=NULL; return p; } else{ if(p->next==NULL){ p->prev->next=NULL; p->prev=NULL; free(p); return l; } else{ p->prev->next=p->next; p->next->prev=p->prev; free(p); return l; } } } } void imprime(Lista *l){ Lista*p; if(l==NULL){ printf("Lista de reprodecao vazia"); } else{ for(p=l;p!=NULL;p=p->next){ printf("Musica: %s - Autor: %s\n",p->musica,p->autor); } } } int main (){ Lista *l=NULL; int OP,sair=0; char MUS[40]; while(sair!=4){ puts("\tMenu"); puts("1 - Inserir musica"); puts("2 - Excluir musica"); puts("3 - Reproduzir "); puts("4 - Sair"); scanf("%d",&OP); switch(OP){ case 1: l = insere(l); break; case 2: puts("Informe o nome da musica"); //__fpurge(stddin); fflush(stdin); gets(MUS); l= retira(l,MUS); break; case 3: imprime(l); break; case 4: sair=4; break; } } return 0; }
Compartilhar