-1
#include <stdio.h>
#include <stdlib.h>
typedef struct _fila {
int ini;
int fim;
int tam;
int *vetor;
} Fila;
Fila* criar_fila (int tamanho) {
Fila* fila = (Fila *) malloc (tamanho*sizeof(int));
fila->ini = 0;
fila->fim = 0;
fila->tam = tamanho;
fila->vetor[fila->tam];
return fila;
}
void destruir_fila (Fila *f) {
free(f->vetor);
free(f);
}
void enqueue (Fila *f, int elemento) {
if (f->fim < f->tam){
f->vetor[f->fim] = elemento;
f->fim++;
}
}
int dequeue (Fila *f) {
int elemento = f->vetor[f->ini];
f->ini++;
return elemento;
}
int main () {
/*Inicializando a estrutura de dados fila!*/
Fila *fila = criar_fila (10);
/*Tentando inserir o elemento 1 na fila!*/
int elem = 1;
enqueue (fila, elem);
/*Tentando inserir o elemento 2 na fila!*/
elem = 2;
enqueue (fila, elem);
/*Tentando inserir o elemento 3 na fila!*/
elem = 3;
enqueue (fila, elem);
/*Tentando inserir o elemento 4 na fila!*/
elem = 4;
enqueue (fila, elem);
/*Tentando retirar e imprimir o elemento 1 na fila!*/
printf("%d\n", dequeue (fila));
/*Tentando retirar e imprimir o elemento 2 na fila!*/
printf("%d\n", dequeue (fila));
destruir_fila (fila);
return 0;
}
I’m returning queue, in the method to create queue(int size), but it’s compiling but from Segmentation fault.
In function
criar_fila
you dofila->vetor[fila->tam]
, but what should it do? If the vector is also a pointer, it should not allocate its memory as well?– Woss