Это неправильно:
head->front= NULL;
head->front->link = head->rear;
Вы присваиваете head->front
для NULL, а затем немедленно разыменовываете указатель NULL, получая доступ к head->front->link
.Вы не можете этого сделать, поскольку это приводит к неопределенному поведению и, вероятно, дает вам ошибку времени выполнения, которую вы наблюдаете.