I have implemented a linked list as a self-referencing database table:
CREATE TABLE LinkedList(
Id bigint NOT NULL,
ParentId bigint NULL,
SomeDat
(edit: d'oh! While I was debugging you found it too!)
In SQL Server:
;WITH cte (Id, ParentId, SomeData, [Level]) AS (
SELECT Id, ParentId, SomeData, 0
FROM LinkedList
WHERE ParentId IS NULL
UNION ALL
SELECT ll.Id, ll.ParentId, ll.SomeData, cte.[Level] + 1
FROM LinkedList ll
INNER JOIN cte ON ll.ParentID = cte.ID
)
SELECT * FROM cte
ORDER BY [Level]