c language chained queue implementation