Ir ao conteúdo

Posts recomendados

Postado

Alguém me ajuda pf


 

typedef struct fila TFila;
TFila* inicializa (void);
TFila* insere (TFila *f, int elem);
int retira (TFila *f);
void libera (TFila *f);
int vazia (TFila *f);
#include <stdlib.h>

typedef struct lista{
    int info;
    struct lista *prox;
}TLista;

typedef struct fila{
    TLista *ini;
    TLista *fim;
}TFila;


TFila* inicializa(){
    
    TFila *f = (TFila*) malloc(sizeof(TFila));

    f->ini = f->fim = NULL;
    return f;
}

int vazia(TFila *f){
    if(f->ini == NULL)
	    return 1;
    else
	    return 0;
  
}


void insere(TFila *f, int elem){
   
    TLista *novo = (TLista*)malloc(sizeof(TLista));
 
    novo->info = elem;
 
    novo->prox = NULL;

   
    if(f->fim){
       
        f->fim->prox = novo;
    }
    f->fim = novo;

    if(!f->ini){
        f->ini = novo;
    }
}

int retira(TFila *f){
    
    if(vazia(f))
        return;
    
    
    int elem = f->ini->info;

   
    TLista *aux = f->ini;

    
    f->ini = f->ini->prox;

    
    if(f->ini == NULL){
        f->fim = NULL;
    }
   
    free(aux);
    return elem;
}


void libera(TFila *f){
 
    TLista *q = f->ini;
    TLista *aux;
    while(q){
       
        aux = q;
      
        q = q->prox;
       
        free(aux);
    }
    free(f);
}

Usando as funções definidas acima implemente uma função que receba três filas, f, impares e pares (todas já inicializadas), e separe todos os valores guardados em f de tal forma que os valores pares são colocados na fila pares e os valores ímpares na ímpares. Ao final da execução desta função, f permanecerá com todos os seus elementos. É obrigatório o uso do protótipo:

void separa_filas(TFila* f, TFila* par, TFila* impar)

 

  • Curtir 2
Postado
27 minutos atrás, nicholas22 disse:

eu não sei como faço pra separar as filas

 

Elas são separadas ao nascer.

 

Exemplo:

void separa_filas(TFila* f, TFila* par, TFila* impar)
{
  TFila*    mil_filas[1000];
  ...
}

f, par, impar e mil_filas são 1.003 filas. 

 

typedef struct fila TFila;

TFila* inicializa (void);
TFila* insere (TFila *f, int elem);
int    retira (TFila *f);
void   libera (TFila *f);
int    vazia (TFila *f);

Declarando assim não é algo muito útil, mas se é fornecido tem que aceitar afinal. 

 

Isso não tem nada de especial.

 

Imaginando que essas funções façam o óbvio:

  • retira() devolve o primeiro da fila a cada chamada
  • vazia() retorna zero se a fila não está vazia
  • insere insere o elemento na fila

Então 

	TFila* PrimeiraFila = inicializa();
	TFila* SegundaFila =  inicializa();

        for (int i = 0; i < 10; i += 1)
            insere(PrimeiraFila, i);

        while (vazia(PrimeiraFila) == 0)
            insere(SegundaFila, retira(PrimeiraFila));

Esse trecho cria duas filas, coloca os números de 0 a 9 na primeira, depois transposta para a segunda e ao final a primeira está vazia e a segunda tem os 10 elementos...

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!