Too Long; Didn't Read
A Linked List Implementation for Ethereum [Deep Dive] is an implementation for Singly and Doubly Linked Lists, which you can reuse or modify for your own purposes. All the code is available in GitHub or as an npm package. An OOP implementation is possible, but the trade offs deserve an article of its own. The only dynamic contract variable that exists in Solidity are mappings under the hood. The best implementation is based on this: struct Item. Item has a unique id, a member for the id of another Item, and an address which is the data payload.