Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
thiagoescarrone

[RESOLVIDO] Inserção em Fila com problema

Posts Recomendados

Olá, estou tendo problemas com esse código. Eu tenho que inserir um dado em uma Fila, na qual eu tenho um ponteiro para um vetor de structs. Eu tenho um limite de elementos na qual cada fila pode ter(MAX_CLIENTES(definida como 50)). O problema que estou enfrentando é que de alguma maneira algumas vezes ele não insere pois a fila está cheia e outras vezes insere normalmente.Segue o código. Quem puder me dar alguma dica de onde posso estar errando, acredito que seja na alocação de memória.
 

#include <stdio.h>
#include <stdlib.h>
#include<time.h> 
#define MAX_CLIENTES 50
#define MAX_CAIXAS 20
  
typedef struct node{
    int numItems;
    struct node* next;
}nodo;

typedef struct fila{
    int tamanho;
    nodo* inicio;
    nodo* fim;
}Fila;

Fila* criaFila(){
    Fila* nova_fila = (Fila*) malloc(sizeof(Fila));

    nova_fila->tamanho = 0;
    nova_fila->inicio = NULL;
    nova_fila->fim = NULL;
    return nova_fila;
}

int vazia(Fila* fila){
    return (fila->fim == NULL);
}

nodo* ins_fim (nodo* fim, int v){
   nodo* p = (nodo*) malloc(sizeof(nodo));
   p->numItems = v;
   p->next = NULL;
   if (fim != NULL)  /* verifica se lista não estava vazia */
      fim->next = p;
   return p;
}

void insere (Fila** f, int v, int i){
    if(f[i]->tamanho < MAX_CLIENTES){
       f[i]->fim = ins_fim(f[i]->fim,v);
       if (f[i]->inicio==NULL)  /* fila antes vazia? */
          f[i]->inicio = f[i]->fim;
    f[i]->tamanho++;
    }else{
        printf("filha cheia\n");
    }
}
//===========
nodo* ret_ini(nodo* inicio){
    nodo* p = inicio->next;
    free(inicio);

    return p;
}


int main(void){

Fila* fila[MAX_CAIXAS];

do{
        printf("Quantos caixas deseja criar? \n");
        scanf("%d",&quant);
    }while(quant > MAX_CAIXAS || quant <= 0);
    
    for(i = 0; i < quant; i++){
        fila[i+1] = criaFila();
    }
     insere(fila, 5,0);

}

Desde já agradeço.

Editado por thiagoescarrone

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela indicação fredericopisarra, com certeza vou procurar esse livro.

Problema resolvido, o problema de lixo de memória estava apenas na primeira posição do meu vetor. Causado pelo metodo de criação da minha fila, na qual ele pulava a posição zero(fila+1). 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons no total são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...