I don't understand why printq() function prints 0, but when I access it back in main() it prints. I don't understand what I am doing wrong, I tried using pointers, but I get some different error in the priority queue. I want to print elements in array pq[10].
EDIT: I realized that the elements are stored but when I use pq[R].data it prints
but when I use pq[i].data in printq() and put it inside for loop, it prints zero.
#include <stdio.h>
int F = -1, R = -1;
int item, max = 10;
struct prioq {
    int data;
    int prio;
};
struct prioq pq[10] = { 0 };
void printq()
{
    int i = 0;
    printf("%d,", pq[i].data);
    printf("QUEUE :");
    for (i = 0; i < max; i++) {
        printf("%d,", pq[i].data);
    }
    printf("\n");
    printf("PRIO  :");
    for (i = 0; i < max; i++) {
        printf("%d,", pq[i].prio);
    }
}
void enqueue(int item, int p, struct prioq pq[])
{
    if (F == -1 && R == -1 || F > R) {
        F == 0;
        R == 0;
        pq[R].data = item;
        pq[R].prio = p;
        printf("%d", pq[R].data);
        printf("%d", pq[R].prio);
        printq();
    } else if (R == max-1 || R > max) {
        printf("overflow\n");
    } else if (R < max) {
        R++;
        pq[R].data = item;
        pq[R].prio = p;
        printq();
    }
}
void dequeue(struct prioq pq[])
{
    int large = 0;
    if (F == -1) {
        printf("underflow\n");
    } else {
        int i;
        for (i = 0; i < max; i++) {
            if (pq[i].prio > large) {
                large = i;
            }
        }
    }
    item = pq[large].data;
    pq[large].prio = 0;
    pq[large].data = 0;
    printf("item deleted: %d\n", item);
    printq();
}
void main()
{
    int item = 0;
    int c = 0, p = 0;
    do {
        printf("choose your option\n");
        printf("1.Insert, 2.Delete, 3.Exit\n" );
        scanf("%d", &c);
        switch (c) {
            case 1:
                printf("Enter the priority and element to insert\n");
                scanf("%d %d", &item, &p);
                enqueue(item,p,pq);
                printf("%d", pq[R].data);
                printf("%d", pq[R].prio);
                break;
            case 2:
                dequeue(pq);
                break;
            default:
                c = 3;
                break;
        }
    } while (c != 3);
    printf("exited\n");
}
 
     
     
    