Underlying any relational database is a table structure, with links between key fields in the tables.
Not necessarily. They are only links when you want them to be. For example, a join expression can be anything you want it to be:
select * from cities1, cities2 where cities1.name like
cities2.title || '%'
matches similarly-named cities.
This is a purely "calculated" join. There is no pre-set links. RDBMS may put commonly used links in some kind of index-like thing to speed them up, but that is an optimization detail that is hidden from the query builder. In relational, you ask WHAT you want, not HOW to get it. (This is in some ways similar to Prolog I hear.) With nav's, you generally have to tell it how to get stuff, which "path" to take.
I don't know how you can say that a relational DB doesn't use a navigational structure with a straight face
I did NOT say they didn't. My point is that it is an implementation detail that is hidden. Languages like Python or Pascal may use bytecodes or machine code underneath to carry out commands, but the language user does not have to really care. The relationship between relational and nav structures is similar. Navigational is the proverbial bytecode of structure manipulation.