In HTML4 — no, in HTML5 — yes.
If you need valid code in HTML4, it’s necessary to put links inside block elements and wrap each inline element separately.
A simple case:
<h1><a href="page.html">Title</a></h1>
More complex case:
<div class="figure">
<a href="page.html">
<img src="/images/ball.jpg" alt="A ball">
</a>
<div class="figcaption">
<a href="page.html">A ball</a>
</div>
</div>
In HTML5, it’s easier:
<a href="page.html">
<figure>
<img src="/images/ball.jpg" alt="A ball">
<figcaption>A ball</figcaption>
<figure>
</a>