Lists Review and Performance

Created By: Geoffrey Challen
/ Updated: 2022-10-10

Welcome back! Next we're going to wrap up our discussion of lists. First, we'll make some forward progress on our linked list implementation. Then, we'll compare and contrast the two performance of our two approaches.

Warm Up Debugging Challenge

But! Let's warm up with another graded debugging challenge!

Linked List Remove

At this point we can initialize our linked lists and get and set items. But what about add and remove? It's not a list yet!

Both add and remove require adjusting the linkage to either insert or delete elements. This is tricky! Let's start with remove. First, let's look at what needs to happen using a diagram.

Diagram what needs to happen for remove.

OK, now let's take a stab at this in code!

Linked List Add

What about add? We'll leave that for you to work on... But, to help you get started, let's diagram it first:

Diagram what needs to happen for add.

ArrayList v. LinkedList Performance

Let's examine the performance tradeoffs of our ArrayList versus our LinkedList.

Discuss the performance tradeoffs of using a ArrayList versus a LinkedList.

Now, you might be wondering why anyone would use a linked list, ever! However, there are applications that only ever modify the ends of the list!

For example, consider a help queue. Requests are added at one end and removed from the other. So we are only ever modifying the front or the end of the list.

Modifying the front of a linked list is O(1). But what about the end? Could we make that O(1) too? Sure! Let's see how.

Show how to complete the homework problem above. Feel free to cover multiple approaches!

More Practice

Need more practice? Head over to the practice page.