Ir ao conteúdo
  • Cadastre-se

Lista com fila


Robson_Hatake

Posts recomendados

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;
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!