codice:
while (c1!=NULL) // finchè il puntatore alla catena è != da NULL
      c1 = c1->next;
c1 = p;
Non se se dico giusto, ma se cl è un puntatore al primo elemento della catena, quando sei arrivato in fondo, non devi fare c1=p, altrimenti lo farai semplicemente puntare a p, dovrai fare

codice:
c1->Next=p;
Spero di aver capito bene.