Когда вы делаете:
void Call_By_Test(mynode * first)
Сначала вы копируете, так что вы можете работать с тем, что находится первым, но вы не можете сначала изменить адрес, так как это копия.
Если вы хотите сначала изменить значение, тогда у вас должна быть такая функция:
void Call_By_Test(mynode ** first)
или
void Call_By_Test(mynode & first)
, который позволяет вам сначала получить доступ к аргументу, как если бы он был исходной переменной (а не копией из основной функции)