Jeden problem je v tomto
if(arr[qMin].tail == NULL){
arr[qMin].tail = newC;
}else{
arr[qMin].tail->next = newC;
arr[qMin].tail = newC;
}
//overim, jestli je head NULL
if(arr[qMin].head == NULL){
arr[qMin].head = arr[qMin].tail;
arr[qMin].tail = NULL;
}
a to ten ze ak si mal predtym head uz nastaveny a tail bol NULL, a pridavas tam prvok tak urobis lenarr[qMin].tail = newC;
a nenstavis head->next = newC, ak head neni null.
Cele to pridavanie prvku je chaoticky navrhnute, logicky rozmyslajuci clovek to snad napise od hlavy k pate, t.j.:
// OD HLAVY
if(arr[qMin].head == NULL){
arr[qMin].head = newC;
}else if(arr[qMin].tail == NULL){
arr[qMin].tail = newC;
arr[qMin].head->next = newC;
}else{
// K PATE :))
arr[qMin].tail->next = newC;
arr[qMin].tail = newC;
}