Inserts data into this using func to determine the new position.
| this | a Queue | 
| data | the data to insert | 
| func | the CompareDataFunc used to compare elements in the queue. It is  called 
                  with two elements of the this and  | 
| user_data | user data passed to  |