Добавление элементов в очередь

typedef struct node {
    const void*  ptr;
    struct node* next;
} node_t;

typedef struct {
    node_t* head;
    node_t* tail;
} queue_t;

Задаю уже вопрос конкретно по некоторым моментам.Добавление в очередь.Хотел бы всё таки выяснить(queue_t* q и node_t* p - что значат буквы q и p после указателей?) И всё таки что это за "поинтер"?(ptr)

Очень хотелось бы получить объяснение, как производится добавление эл-та в очередь именно в данном примере.Не совсем понимаю, что здесь происходит, анализируя этот фрагмент кода.

И спасибо большое за помощь по предыдущим вопросам.

int queue_push(queue_t* q, const void* ptr){
    node_t* p = (node_t*)malloc(sizeof(node_t));
    if(p != NULL){
        p->ptr  = ptr;
        p->next = NULL;
        if(q->head == NULL)
            q->head = q->tail = p;
        else {
            q->tail->next = p;
            q->tail = p;
        }
    }
    return (p != NULL);
}

Ответы (0 шт):