A este toto je uplna hovadina
cus *remove = new cus;
remove = (cus *)&arr[i].head;
naco robis novy objekt pomocou new? A odkaz na neho si naveky prepises a teda ten novy objekt nikdy nezmazes? Testujes ze kedy ti dojde cela volna RAM? :)A ten druhy riadok je tiez nezmysel, uvolnujes uplnu hovadinu. V head mas predsa pointer.
T.j. spravne ma byt
cus *remove;
remove = arr[i].head;