In the table below, each data record is assigned a memory address, and each record has five fields that contain data. The first field holds the physical memory address of the record and the last field holds the physical memory address of the next logical record. The data is organized numerically based on the ID field, and the list is linked because each record is linked to the next based on that last field.
Address of Record | ID | Name | Phone Number | Next Name |
0000 | 1111 | Adams | 265-8943 | 5500 |
5500 | 3333 | Johnson | 465-7219 | 6000 |
6000 | 4444 | Smith | 421-6307 | 8200 |
8200 | 5555 | Murphy | 720-9437 | eof (end of file) |
If a new record is added to the list, with a numerical ID of “2222,” it will be assigned an available physical address that may not be adjacent to the physical memory address of the record that precedes or comes after it numerically (1111 or 3333 in this case). When this record is added to the list, the list changes to reflect the new linking logic, based on the numerical ID. Note how the “Next Name” field changes for ID 1111 to accommodate the added record with ID 2222.
Address of Record | ID | Name | Phone Number | Next Name |
0000 | 1111 | Adams | 265-8943 | 9672 |
9672 | 2222 | Jones | 481-9698 | 5500 |
5500 | 3333 | Johnson | 465-7219 | 6000 |
6000 | 4444 | Smith | 421-6307 | 8200 |
8200 | 5555 | Murphy | 720-9437 | eof |
Linked lists are used to organize data in specific desired logical orders, independent of the memory address each record is assigned to. In the above example, the data is organized numerically by the ID number. In the table below, the same data is organized alphabetically by name. Notice how the linked list still connects each record to the next using the “Next Name” field.
Address of Record | ID | Name | Phone Number | Next Name |
0000 | 1111 | Adams | 265-8943 | 5500 |
5500 | 3333 | Johnson | 465-7219 | 9672 |
9672 | 2222 | Jones | 481-9698 | 8200 |
8200 | 5555 | Murphy | 720-9437 | 6000 |
6000 | 4444 | Smith | 421-6307 | eof |
Linked list data storage works best with data arrays in which one doesn t know how large the array will need to be or when there is a certainty of more data being added or subtracted at later times. A disadvantage to linked list data storage is that the data must be accessed sequentially and cannot be accessed randomly. Some common applications of linked lists include creating hash tables for collision resolutionn across communication channels, structuring binary trees, building stacks and queues in programming, and managing relational databases.