Follow a linked list
convey, 36 29 bytes
v&lt;&lt;&lt;&lt;,{
\~./.&quot;
&gt;&quot;`=&gt;!
 &gt;!0&lt;&quot;}

Try it online!

{ gets the input, that will get looped around in the upper two rows, while outputting downwards the length \, its indices /. and a copy of itself &quot;. It will only continue after ~. (batch) if n elements reach ~., whereas n will be the length.

We then take ! n copies of the current index i (starting with 0) and compare = them to the indices of the list. This returns either 1 or 0. We take the correspondent element of the copied list so many times, effectively filtering the others out. The next index then gets copied to the output &quot;} and waits for the next iteration.