Lista dentro de uma lista

1. Lista dentro de uma lista

João vitor kilberyt
joaovitor02

(usa Outra)

Enviado em 20/02/2016 - 20:06h

Bem preciso criar uma lista dentro de outra lista, uma como se fosse o CD e a outra lista lista como se fosse as musicas, também preciso remover a musica ou o CD, busca se existe a musica ou o CD, e se eu quiser adicionar mais musicas ou CDs.


  


2. Re: Lista dentro de uma lista

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 20/02/2016 - 20:07h

Ok!

Posso ajudar em algo? Já tem algum código pronto? Poste aqui e poderemos ajudar!

Não vamos entregar código pronto!

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)



3. tenho, bem tem alguns erros e meu menu ainda nao esta totalmente pronto.

João vitor kilberyt
joaovitor02

(usa Outra)

Enviado em 20/02/2016 - 20:22h

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

//ESTRUTURA PARA cd
typedef struct CD{
char cd[50];
struct CD* prox;
}CD, *noCD;

//ESTRUTURA PARA DISCIPLINAS
typedef struct Listamusic{
char music[50];
struct Listamusic* prox;
}Listamusic, *nomusic;


//######################//
//FUNÇÕES PARA cd
void cria (noCD *l){
(*l) = NULL;
}

_Bool busca(noCD *l,char v[50]){
CD *q;
int i=0;
char info[i];
for(i=0;i<50;i++){
for (q=*l; q!=NULL; q=q->prox){
if(q->cd[i] == v[i]){
if(!(strcmp(q->cd,v))){
puts(q->cd);
printf("\n\nachou %d\n\n\n",i);
return q;
}
i++;

}}}
return false;
}

void imprime (noCD* l){
CD *p;
for (p=*l; p!=NULL; p=p->prox){
puts(p->cd);
}


}

_Bool insere_ordenado (noCD *l, char v[50]){

CD *p;
if(busca(l,v)){
printf("Ja existe\n");
return false;
}

p = (CD*) malloc(sizeof(CD));
strcpy(p->cd,v);
CD* ant = NULL;
CD *r = *l;
while (r != NULL && (strcmp(v,r->cd) > 0)) {
ant = r;
r= r->prox;
}
if (ant == NULL) {
p->prox = *l;
*l = p;
}
else {
p->prox = ant->prox;
ant->prox = p;
}
return l;
}

_Bool retira (noCD* l, char v[50]) {//Em qualquer posicao
CD *ant = NULL;
CD *p;
p = *l;
while (p != NULL && (strcmp(p->cd, v)!=0)) {
ant = p;
p = p->prox;
}
if (p == NULL)
return l;
if (ant == NULL) {
*l = p->prox;
}
else {
ant->prox = p->prox;
}
free(p);
return l;
}


//FUNÇÕES PARA cd
void crialistadisc (nomusic *l){
(*l) = NULL;
}

_Bool buscadisc(nomusic *l,char v[50]){
Listamusic *q;
int i=0;
for(i=0;i<50;i++){
for (q=*l; q!=NULL; q=q->prox){
if(q->music[i] == v[i]){
if(!(strcmp(q->music,v))){
puts(q->music);
printf("\n\nachou %d\n\n\n",i);
return q;
}
i++;
}
return false;
}
}}
void imprimedisc (nomusic* l){
Listamusic *p;
for (p=*l; p!=NULL; p=p->prox){
puts(p->music);
}
}

_Bool insere_ordenado_disc (nomusic *l, char v[50]){
int i=0;
Listamusic *p;
if(buscadisc(l,v)){
printf("Ja existe\n");

return false;
}

p = (Listamusic*) malloc(sizeof(Listamusic));
strcpy(p->music,v);
Listamusic* ant = NULL;
Listamusic *r = *l;
while (r != NULL && r->music[i] < v[i]) {
ant = r;
r= r->prox;
}
if (ant == NULL) {
p->prox = *l;
*l = p;
}
else {
p->prox = ant->prox;
ant->prox = p;
}


return l;
}

_Bool retiradisc (nomusic* l, char v[50]) {//Em qualquer posicao
Listamusic *ant = NULL;
Listamusic *p;
p = *l;
int i=0;
while (p != NULL && p->music[i] != v[i]) {
ant = p;
p = p->prox;
}
if (p == NULL)
return l;
if (ant == NULL) {
*l = p->prox;
}
else {
ant->prox = p->prox;
}
free(p);
return l;
}

void menuCD(){
CD *l;
Listamusic *d, *r;
cria(&l);
int op;
char dado[50], music[50];
do{

printf("1)Insere, 2)Imprime, 3)Busca ou 4)Remove? ");
scanf("%d",&op);


if(op==1){
//system("cls");
printf("Digite o nome: ");
scanf(" %50[^\n\t]",dado);
insere_ordenado(&l,dado);//system("cls");
printf("Insira a musica: ");
scanf(" %20[^\n\t]",music);

if(music==r->music)
insere_ordenado_disc(&d,music);
}
if(op==2){
printf("Dados:\n");

imprime(&l);
}

if(op==3){
printf("Qual nome: ");
scanf(" %50[^\n\t]",dado);

busca(&l,dado);
}

if(op==4){
printf("Qual nome: ");
scanf(" %50[^\n\t]",dado); //30 tamanho do char
retira(&l,dado);
}

}while(op!=0);
}
void menumusica(){
CD *l;
Listamusic *d;
cria(&l);
crialistadisc(&d);
int op;
char music[20];
do{

printf("1)Insere, 2)Imprime, 3)Busca ou 4)Remove? ");
scanf("%d",&op);


if(op==1){
//system("cls");

printf("Insira a musica: ");
scanf(" %20[^\n\t]",music);
insere_ordenado_disc(&d,music);
}
if(op==2){
printf("Dados:\n");

imprimedisc(&d);
}

if(op==3){
printf("Qual nome: ");
scanf(" %50[^\n\t]",music);

buscadisc(&d,music);
}

if(op==4){
printf("Qual nome: ");
scanf(" %50[^\n\t]",music);
retiradisc(&d,music);
}

}while(op!=0);
}



int main(int argc, char **argv)
{

menuCD();
menumusica();
char op;
printf("a) CD d) musica ");
scanf("%c",&op);

switch (op){
case 'a':
menuCD();

case 'd':
menumusica();

}

return 0;
}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts