Ir ao conteúdo
  • Cadastre-se
Robson_Hatake

Lista com fila

Recommended Posts

A questao pedi pra mim fazer uma lista com meu nome completo e depois fazer uma fila, nao to conseguindo consertar o erro, pf me ajudem ;-;

 

Funcoes2.c

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "Funcoes2.h"

Lista* inicializa()
{

return NULL;
}

Lista* insere(Lista* l, char i)
{
Lista* novo= (Lista*)malloc((sizeof(Lista)));
novo->info = i;
novo->prox = l;
return novo;
}


void imprime(Lista* l)
{
Lista* p;
for(p=l; p !=NULL; p=p->prox)
{
printf("%c",p->info);
}
}


Fila* criar_fila()
{
return NULL;
}


void filar(Fila **fi,Lista *l)
{
Lista *i;
Fila *aux = *fi;
Fila *anterior = NULL;
Fila *novo = (Fila*)malloc(sizeof(Fila));
//inicia i com a 'lista' do parametro
novo->nome = l->info;
novo->prox = l->prox;
if(*fi == NULL){
*fi = novo;
}
else
{
//aux = fi
while(aux != NULL)
{
anterior = aux;
aux = aux->prox;
}
anterior->prox = novo;
}
}


void imprime_fila(Fila **fi)
{
if(*fi == NULL)
{
printf("\nFILA VAZIA\n");
}
else
{
Fila *aux;
printf("\n");
for(aux = *fi ; aux!=NULL ; aux = aux->prox)
{
printf("%c", aux->nome);
}
printf("\n");
}
}


void retira(Fila **fi){

char letra;

do{
    Fila *aux = *fi;
    letra = aux->nome;
    *fi = aux->prox;
    
    
    free(aux);


}while(letra !=' ');
    
    
}

 

Funcoes2.h

 

// -------------------------
// DECLARAÇÃO DAS ESTRUTURAS
// no da lista
struct lista
{
char info;
struct lista* prox;
};
typedef struct lista Lista;
// no da fila
struct fila
{
struct lista *nome;
struct fila *prox;
};
typedef struct fila Fila;
// inicializa lista
//-------------------------------
//ASSINATURA DAS FUÇÕES
// Serve para inicializar a lista
Lista* inicializa();
// insere na lista
Lista* insere(Lista* l, char i);
//imprime a lista
void imprime(Lista* l);
// Serve para inicializar a fila
Fila* criar_fila();
//Serve para enfileirar  as listas na fila
void filar(Fila **fi,Lista *l);
//serve para imprimi as fila
void imprime_fila(Fila **fi);
//serve para retirar as listas da fila
void retira(Fila **fi);

 

 

main2.c

 

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "Funcoes2.h"

int main()
{
int i;
Lista* l1; /* declara uma lista não iniciada */
l1 = inicializa(); /* inicia lista vazia */
l1 = insere(l1, ' ');
l1 = insere(l1, 'n');
l1 = insere(l1, 'o');
l1 = insere(l1, 's');
l1 = insere(l1, 'b');
l1 = insere(l1, 'o');
l1 = insere(l1, 'R');
l1 = insere(l1, ' ');
printf("lista 1:\n");
imprime(l1);
printf("\n");
Lista* l2;
l2 = inicializa();
l2 = insere(l2, ' ');
l2 = insere(l2, 'e');
l2 = insere(l2, 't');
l2 = insere(l2, 'n');
l2 = insere(l2, 'a');
l2 = insere(l2, 'c');
l2 = insere(l2, 'l');
l2 = insere(l2, 'a');
l2 = insere(l2,'v');
l2 = insere(l2, 'a');
l2 = insere(l2,'C');
printf("lista 2:\n");
imprime(l2);
printf("\n");
Lista* l3;
l3 = inicializa();
l3 = insere(l3, 's');
l3 = insere(l3,'a');
l3 = insere(l3, 'i');
l3 = insere(l3,'D');
printf("lista 3:\n");
imprime(l3);
printf("\n");
Fila *fila;
fila = criar_fila();
filar(&fila, l1);
filar(&fila, l2);
filar(&fila, l3);
imprime_fila(&fila);
//retira 1 nome
retira(&fila);
imprime_fila(&fila);
//retira 2 nome
retira(&fila);
imprime_fila(&fila);
// retira 3 nome
retira(&fila);
imprime_fila(&fila);
// tenta retirar com fila vazia
retira(&fila);

system("PAUSE > NULL");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×