Linked Lists Preparation
Overview
You’ve worked with lists a lot by using built-in functionality, but how do those built-in lists actually work? Today, we’ll be focusing on one way to implement the unordered list ADT: linked lists.
Basic Learning Objectives
Before class, you should be able to:
- Explain what a list is
 - Explain what the unordered list ADT is
 - Explain the general idea of a linked list
 
Advanced Learning Objectives
After class, you should be able to:
- Implement a basic linked list in Kotlin
 
Readings
Read the following (again, there is some Python, but focus on the ideas):
Checks
Submit answers to the following on Moodle. Feel free to draw out your linked lists on paper and upload a picture.

- Given the singly linked list above, what will the linked list look like if the node 
“Great Hall will be on your left”is inserted at the end of the list? - What do you think is the Big-O time complexity of  
insertAtEnd()? Why? - Given the singly linked list from Q1, what will the linked list look like if the first node 
“Turn right on 1st E”is removed? - What do you think is the Big-O time complexity of  
removeFirstNode()? Why? - Compare the Singly Linked List Implementation and the List Implementation of a Stack. What are some similarities and differences across both the implementations?
 
Acknowledgements
The check questions and diagram are from Prof Jean Salac.