PurpleMonkey, read "A simple directory lookup won't work".
Well, vectornut, you effectively have a linked list structure.
Adding a node in the middle of a linked list involves changing the node before, and after the position where the node is to be added.
You could take a dynamic approach by using a database to hold the paths and filenames.
For example, you could use a textfile to hold:
/authors/robertasprin.html
/authors/marionzimmerbradley.html
/authors/davidbrin.html
/authors/terrybrooks.html
/authors/stevenbrust.html
/authors/loismcmasterbujold.html
/authors/cjcherryh.html
/authors/PrestonChild.html
/authors/rickcook.html
/authors/CliveCussler.html
Then use [man]file/man on this textfile.
You can find the current file's place in the array returned by file(), and then work out the previous and next entries, if any.
The nodes would be entered by simply editing the textfile.
Conversely, you could use a relational database to store these filenames and their order, according to some number.
In both cases, the hyperlinks would be dynamically generated.