![Hands-On Data Structures and Algorithms with Rust](https://wfqqreader-1252317822.image.myqcloud.com/cover/990/36698990/b_36698990.jpg)
Linked lists
To keep track of a bunch of items, there is a simple solution: with each entry in the list, store a pointer to the next entry. If there is no next item, store null/nil/None and so on, and keep a pointer to the first item. This is called a singly linked list, where each item is connected with a single link to the next, as shown in the following diagram—but you already knew that:
![](https://epubservercos.yuewen.com/7290CA/19470382901511706/epubprivate/OEBPS/Images/73e264f8-1621-4095-9d02-fb0a5645e62b.png?sign=1738883411-FJe9qZYiWxhodisfoD2pU3uey8eJzScr-0-318200461cd0e24783ef2cf8b822a6cf)
What are the real use cases for a linked list though? Doesn't everyone just use a dynamic array for everything?
Consider a transaction log, a typical append-only structure. Any new command (such as a SQL statement) is simply appended to the existing chain and is eventually written to a persistent storage. Thus, the initial requirements are simple:
- Append a command to an existing list
- Replay every command from the beginning to the end—in that order
In other words, its a queue (or LIFO—short for Last In First Out) structure.