Jump to content
Sign in to follow this  
thiagoescarrone

[RESOLVIDO] Inserção em Fila com problema

Recommended Posts

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.

Edited by thiagoescarrone

Share this post


Link to post
Share on other 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). 

 

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...