Top Banner
Linked List Interview Prep Spencer Moran 11/20/13
23
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Linked lists

Linked List Interview Prep

Spencer Moran11/20/13

Page 2: Linked lists

Why Linked Lists?

• Simplicity• Little variation• Pointers and references

Page 3: Linked lists

Singly Linked List

Almost all LL interview questions are based on singly linked lists

Page 4: Linked lists

Doubly Linked List

Page 5: Linked lists

Implementation

• Can be implemented as an ADT

• Often use templates• List is referred to by the

head, the first node in the list

• If you modify the list, you must return the head of the new list

Page 6: Linked lists

Traversal

Page 7: Linked lists

Insertion

Page 8: Linked lists

Deletion

Page 9: Linked lists

Linked List Question Strategies

• Use two (or more??) pointers to traverse the list

• Traverse pointers at different speeds• Use an additional data structure

Page 10: Linked lists

Common Linked List Questions

Find the kth to last element in a singly linked list.

Page 11: Linked lists

Strategy

• Use multiple pointers to traverse the list.• Return an error if the list is not at least k

nodes long.• Traverse the list with 2 pointers:– Pointer1 starts at head– Pointer2 starts k nodes in front of the head.– When pointer2 reaches the end of the list, return

pointer1

Page 12: Linked lists
Page 13: Linked lists

Common Linked List Questions

Determine if a singly linked list has a loop or cycle.

Page 14: Linked lists

Strategy

• Use multiple pointers and traverse them at different speeds.

• Start both pointers at head:– Traverse the list, moving fast pointer twice as fast

as the slow pointer.– If fast pointer reaches the end of the list, there is

no cycle.– If the pointers ever are equal to one another,

there is a cycle.

Page 15: Linked lists
Page 16: Linked lists

BONUS QUESTION

Determine if a linked list has a cycle. If it does, return the element where the cycle begins.

Page 17: Linked lists
Page 18: Linked lists

Bonus Question #2

Find the length of the cycle without traversing it multiple times.

Page 19: Linked lists

Common Linked List Questions

Reverse a singly linked list.

Page 20: Linked lists

Strategy

• Use an additional data structure.• Traverse the list, pushing each node into the

stack.• Set the new head equal to the first element in

the list.• Starting at the new head, add the top element

from the stack until the stack is empty.

Page 21: Linked lists
Page 22: Linked lists

Other common questions

• Remove duplicates from a singly linked list• Merge sort• Remove element from middle of list (without

head)• Check if the linked list is a palindrome• Fold a singly linked list using no containers

Page 23: Linked lists

Meeting Summary

We also covered a bunch of questions at the end of the meeting. These questions were mostly about linked lists, but we also started covering trees and decided that trees and graphs will be our next topic. The date of our next meeting will be arranged through the facebook group.