Hello, I'm implementing a function to insert elements in a queue
and I noticed that after the first element entered, the pointer headPtr
and'tailPtr estão apontando para o mesmo lugar, logo o problema só pode estar na função
lines', however I can not solve it.
Could someone point out her mistake? Here is the code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node {
int elemento;
struct node* prox;
}FILA;
int ehvazia(FILA* p) {
return p == NULL;
}
void verifica(FILA* p) {
if(ehvazia(p)) {
printf("MEMORIA INDISPONIVEL\n");
exit(1);
}
}
void espia(FILA* headPtr) {
printf("%d\n", headPtr->elemento);
}
void enfileira(FILA* headPtr, FILA* tailPtr) {
FILA* temp = malloc(sizeof(FILA));
verifica(temp);
int valor;
printf("Valor: ");
scanf("%d", &valor);
temp->elemento = valor;
if(ehvazia(headPtr)) {
headPtr = temp;
tailPtr = head;
} else {
tailPtr->prox = temp;
tailPtr = temp;
}
}
void desinfileira(FILA* headPtr, FILA* tailPtr) {
FILA* tempPtr;
tempPtr = headPtr;
headPtr = headPtr->prox;
if(ehvazia(headPtr)) {
tailPtr = NULL;
}
free(tempPtr);
};
void imprimefila(FILA* headPtr, FILA* tailPtr) {
FILA* atual;
atual = headPtr;
printf("A fila eh: \n");
while(atual != NULL) {
printf("-->%d", atual->elemento);
atual = atual->prox;
}
//printf("A fila está vazia\n");
}
int main() {
FILA* inicio = NULL;
FILA* fim = NULL;
int res;
do {
printf("DESEJA INSERIR MAIS? <1>S <0>N\n");
scanf("%d", &res);
if(res == 1){
enfileira(inicio, fim);
}
}while(res <= 1 && res > 0);
imprimefila(inicio, fim);
}