What you pay (GC) for the privilege of having pointer cycles in your data is grossly disproportionate to the benefit. Yes, there are a lot of things that are O(k) with pointer cycles and O(log n) without them. If what you buy from this optimization is worth the cost of GC, you are doing a lot of these things... a lot.
Note that relational databases don't have back pointers either. All references between tables are symbolic. Last century, people tried to make databases that were general pointer graphs (google "network database" or "object database") - broadly speaking, it was a disaster.
If I tell you a linked list of atoms (@) is made from this tile (type):
[p=@ q=*]
it becomes obvious, right?
[p=1 q=[p=2 ..]]
[p=1 q=[p=2 q=[p=3 q=[p=4 q=~]]]]
This should look like building a list from 1-4. There are no cycles, ~ is a terminator.
Q is the reference to the next item in the list.
This would constitute a cycle:
z=[p=1 q=[p=2 q=z]]