If $ f(x \cdot f(y) + f(x)) = y \cdot f(x) + x $, then $f(x)=x$
Solution 1:
The equation we have is $f(xf(y)+f(x))=yf(x)+x$.
Set $x=0$ to get $f(f(0))=yf(0)\; \forall y\implies f(0)=0$. Then set $y=0$ for arbitrary $x$ to get $f(f(x))=x\;\forall x$.
Now let $x=y=1$, to get $f(2f(1))=f(1)+1$. So pick $x=1,y=f(1)$ to get $f(1+f(1))=f(1)^2+1$, from which $f(1)^2+1=f(f(2f(1)))=2f(1)$, so $f(1)=1$.
Now set $x=1,y=f(z)$to get $f(z+1)=f(z)+1$, which can be used inductively to show that $f(n)=n$ for all integer $n$.
Finally, let $y=p/q,x=q$, for $p$ and $q$ nonzero integers. Then $f(qf(p/q)+q)=p+q$, applying $f$ gives $qf(p/q)+q=p+q$, from which $f(p/q)=p/q$, so we are done.
Solution 2:
Since $f(f(x))=x$, $f$ is bijective and there is a $y_0$ such that $f(y_0)=1$. Now we have $$f(x+f(x))=y_0f(x)+x$$ $$f(xf(1)+f(x))=f(x)+x$$ which leads to $y_0f(x)+x=xf(1)+f(x)$ for all $x\in\mathbb{Q}$, or $$(f(1)-1)x=(y_0-1)f(x).$$
Suppose that $y_0\neq 1$, then it turns out that $f(x)$ is a linear function. It is easily verified that in this case the only possibility is $f(x)=x$ which contradicts to $y_0\neq 1$.
Therefore we conclude $y_0=1=f(1)$, and as mastrok noticed we have $f(y+1)=f(y)+1, \forall y$, and equivalently $f(y-1)=f(y)-1,\forall y$.
The next step is for every $x\neq 0$, suppose $f(y)=1/x$ and we get $$yf(x)+x=f(1+f(x))=f(f(x))+1=x+1,$$ and hence $y=1/f(x)$. That is, $f(1/x)=1/f(x),\forall x\neq 0.$
Now consider the set $S=\{x\mid f(x)=x\}$. We already know $0\in S$, and $S$ is closed under operations 'plus one', 'minus one' and 'reciprocal'. Now I think it's easy for yourself to check $S=\mathbb{Q}$ by induction with an Euclidean fashion. There's an example here: $$13/5\rightarrow 3/5 \rightarrow 5/3\rightarrow 2/3\rightarrow 3/2\rightarrow \ldots$$
Update: Since there are ones not familiar with Euclidean algorithm, I try to make it clearer. Use induction on $q$ for fraction $p/q\in\mathbb{Q}$, where $(p,q)=1$ and $q>0$. The Euclidean division turn out that $$p=aq+b,a\in\mathbb{Z}, 0\leq b<q.$$ And $b/q\in S$ since $q/b\in S$ by inductve hypothesis. Now $p/q=b/q+a\in S$ and the induction is done since the initial case $q=1$ is trivial.
Solution 3:
If you have $f(f(x))=x$ it means that the function is onto
Furthermore, assume that $f(y_1) = f(y_2)$ for some $y_1 \neq y_2$
$$ f(-f(y_1)-1 ) =f(-f(y_1)-1 ) $$ $$\Rightarrow -y_1 -1 = -y_2 -1 $$ $$\Rightarrow y_1 = y_2 !! $$
Thus the function is $1$ $to$ $1$, its inverse $f^{-1}$ exists, in addition to $f(f(x))=x$, we have $f^{-1}=f$
From above, you get $f(f(1)+1) = f(1)+1 $
$f^{-1} = f \Rightarrow f(yf(x)+x) = f^{-1}(yf(x)+x) = xf(y) +f(x) $
For some $x_0=f(1)$, $f(x_0)=f(f(1))=1$ and putting $y=1$
$x_0 f(1) + f(x_0) = f(1 f(x_0) + x_0 )$ $\Rightarrow f(1)^2 +1 = f(f(1)+1) = 2f(1) \Rightarrow f(1)=1$
$\Rightarrow f(y+1)=f(y)+1$ by putting $x=1$ into $f(yf(x)+x) = xf(y) +f(x) $
From the original definition, putting $y=1$ gives $f(x+f(x)) = f(x) +x$
Since $f(x)$ is onto, $f(x)+x$ is also onto(to be proved), therefore we can find $x$ such that $y=x+f(x)$ for all $y$ then $f(y) =y$
I cannot prove that it is onto... However, I found another way by looking at the answer of Willard Zhan. He has proven $f(1/q) = 1/q$ for integers $q$
For all $\frac{p}{q}$, it can be always written as $\frac{m+1}{q}$, where $m$ is also an integer.
putting $y=m$ and $x=\frac{1}{q}$ into $f(yf(x)+x)=xf(y)+f(x)$ $$f\left( \frac{m+1}{q}\right)=f\left( \frac{m}{q} +\frac{1}{q}\right) = \frac{f(m)+1}{q} = \frac{m+1}{q}$$ since we have proved $f(m)=m$ for integers. I think it completes the proof.