You do not use component_t, node and other struct names.
Better directly use typedefs to reduce sources of error.
typedef struct {
int details;
int priority;
} compo_t;
typedef struct {
compo_t *c;
node_t *link;
} node_t;
typedef struct {
node_t *head;
} prio_t;
The malloc function always returns a pointer.
void enqueue(prio_t* p_q, compo_t* con) {
node_t *temp = (node_t*)malloc(sizeof(node_t));
}
It would also be better if all functions where something could go wrong had a return value.