Я думаю, в вашей логике есть какая-то ошибка в реализации очереди. Я могу дать вам несколько советов.
int front=0,rear=0;
void enqueue(struct node *root)
{
a[rear]=root;
rear++;
}
struct node *dequeue()
{
//handle case where queue is empty
printf("inside dequeue\n");
struct node *temp;
temp=a[front];
front++;
return temp;
}
int isEmpty(){
return(front==rear);
}
Чтобы сделать его более надежным с размером массива, вы должны использовать функцию модуля с такими индексами.
int front=0,rear=0;
void enqueue(struct node *root)
{
a[rear%max]=root;
rear++;
}
struct node *dequeue()
{
//handle case where queue is empty
printf("inside dequeue\n");
struct node *temp;
temp=a[front%max];
front++;
return temp;
}
int isEmpty(){
return(front==rear);
}