Jump to content

[RESOLVIDO] Inserção em Fila com problema


thiagoescarrone

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...