Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CodePath - Linked List

Caren
October 01, 2021

CodePath - Linked List

Caren

October 01, 2021
Tweet

More Decks by Caren

Other Decks in Education

Transcript

  1. Linked Lists
    Week 3
    What’s a good memory you have from this week?
    -> I had an amazingly tasty burger
    🍔

    View Slide

  2. Addressing Feedback
    - Panel was well-received
    - Office hours are posted on course portal now
    - Zoom issues should be resolved

    View Slide

  3. Linked Lists

    View Slide

  4. What is a Linked List?
    Individual elements (nodes) that each hold two
    pieces of information:
    1) data (integer, string, anything!)
    2) reference to the next node

    View Slide

  5. View Slide

  6. Why are they useful?

    View Slide

  7. Why are they useful?
    Web browser’s history (previous / next page)

    View Slide

  8. Why are they useful?
    Web browser’s history (previous / next page)
    Memory management (blocks of memories)

    View Slide

  9. Why are they useful?
    Web browser’s history (previous / next page)
    Memory management (blocks of memories)
    Hash tables (resolving collisions)

    View Slide

  10. Types of Linked Lists

    View Slide

  11. Singly linked
    Doubly linked
    Circularly linked
    Types of Linked Lists

    View Slide

  12. Singly linked
    Doubly linked
    Circularly linked
    Types of Linked Lists

    View Slide

  13. Pros and Cons
    Always think about space / time complexity when
    choosing a data structure!

    View Slide

  14. Pros and Cons
    Always think about space / time complexity when
    choosing a data structure!
    Good for:

    - insertion / deletion from one end 


    View Slide

  15. Pros and Cons
    Always think about space / time complexity when
    choosing a data structure!
    Good for:

    - insertion / deletion from one end 


    Bad for:

    - searching

    View Slide

  16. Pros and Cons
    Always think about space / time complexity when
    choosing a data structure!
    Good for:

    - insertion / deletion from one end 


    Bad for:

    - searching
    https://guides.codepath.org/compsci/Linked-Lists

    View Slide

  17. Linked List Tips and Tricks

    View Slide

  18. Linked List Tips and Tricks
    Take multiple passes through the linked list

    - get length 

    - save other information about contents

    View Slide

  19. Linked List Tips and Tricks
    Take multiple passes through the linked list

    - get length 

    - save other information about contents
    Two pointers

    - ‘race car’ strategy with one regular pointer, and
    one fast pointer

    View Slide

  20. Linked List Tips and Tricks
    Take multiple passes through the linked list

    - get length 

    - save other information about contents
    Two pointers

    - ‘race car’ strategy with one regular pointer, and
    one fast pointer
    Dummy node

    - helpful for preventing errors when returning
    ‘head’ (merging lists, deleting from lists)

    View Slide

  21. Understand
    Match
    Pseudocode / Plan
    Implement
    Review
    Evaluate

    View Slide

  22. Plan / Pseudocode
    Start to figure out how you would solve the problem
    Can you create any ‘magic’ helper methods that would simplify
    the solution? (ie : getLength(), reverse() )
    Talk through different approaches you can take, and their
    tradeoffs
    Be able to verbally describe your approach and explain how an
    example input would produce the desired output

    View Slide

  23. Example: Remove Nth Node
    from End of List
    Understand: Always start by understanding the question and
    running through an example

    View Slide

  24. Example: Remove Nth Node
    from End of List
    Understand: Always start by understanding the question and
    running through an example
    1->2->3->4->5, n = 2


    View Slide

  25. Example: Remove Nth Node
    from End of List
    Understand: Always start by understanding the question and
    running through an example
    1->2->3->4->5, n = 2

    return 1->2->3->5

    View Slide

  26. Example: Remove Nth Node
    from End of List
    Understand: Always start by understanding the question and
    running through an example
    1, n = 1


    View Slide

  27. Example: Remove Nth Node
    from End of List
    Understand: Always start by understanding the question and
    running through an example
    1, n = 1

    return null

    View Slide

  28. Example: Remove Nth Node
    from End of List
    Understand: Always start by understanding the question and
    running through an example
    1->2->3->4->5, n = 2

    return 1->2->3->5
    Let’s assume we start without any time / space constraints. So
    our goal is to figure out ANY kind of solution to produce the right
    answer
    Any other questions??

    View Slide

  29. Example: Remove Nth Node
    from End of List
    Match : Are there any special techniques that we can use to
    help make this easier?


    View Slide

  30. Example: Remove Nth Node
    from End of List
    Match : Are there any special techniques that we can use to
    help make this easier?

    -> We can take a first pass through the linked list to store the
    elements in an array 


    View Slide

  31. Example: Remove Nth Node
    from End of List
    Match : Are there any special techniques that we can use to
    help make this easier?

    -> We can take a first pass through the linked list to store the
    elements in an array 

    -> We can also take a pass to get the length of the linked list

    View Slide

  32. Example: Remove Nth Node
    from End of List
    Match : Are there any special techniques that we can use to
    help make this easier?

    -> We can take a first pass through the linked list to store the
    elements in an array 

    -> We can also take a pass to get the length of the linked list
    Plan : What are some different ways we can solve this problem?


    View Slide

  33. Example: Remove Nth Node
    from End of List
    Match : Are there any special techniques that we can use to
    help make this easier?

    -> We can take a first pass through the linked list to store the
    elements in an array 

    -> We can also take a pass to get the length of the linked list
    Plan : What are some different ways we can solve this problem?

    1) We can store the elements in an array, get the length of the
    array, and then rebuild our list excluding the nth to last node


    View Slide

  34. Example: Remove Nth Node
    from End of List
    Match : Are there any special techniques that we can use to
    help make this easier?

    -> We can take a first pass through the linked list to store the
    elements in an array 

    -> We can also take a pass to get the length of the linked list
    Plan : What are some different ways we can solve this problem?

    1) We can store the elements in an array, get the length of the
    array, and then rebuild our list excluding the nth to last node

    2) We can follow the first idea, but instead of storing things in an
    array, remove the reference to the nth to last node the second
    time we iterate through the list


    View Slide

  35. Example: Remove Nth Node
    from End of List
    Match : Are there any special techniques that we can use to
    help make this easier?

    -> We can take a first pass through the linked list to store the
    elements in an array 

    -> We can also take a pass to get the length of the linked list
    Plan : What are some different ways we can solve this problem?

    1) We can store the elements in an array, get the length of the
    array, and then rebuild our list excluding the nth to last node

    2) We can follow the first idea, but instead of storing things in an
    array, remove the reference to the nth to last node the second
    time we iterate through the list

    What would be the space / time complexity of our solution?

    View Slide

  36. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    View Slide

  37. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    Let’s draw out how this might work with an example

    Given linked list 1->2->3, n = 1 (we want to return 1->2)

    View Slide

  38. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    Let’s draw out how this might work with an example

    Given linked list 1->2->3, n = 1 (we want to return 1->2)
    First pass, we get length = 3.


    View Slide

  39. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    Let’s draw out how this might work with an example

    Given linked list 1->2->3, n = 1 (we want to return 1->2)
    First pass, we get length = 3. Since n = 1, that means we want to remove
    the 3 -1 = 2 node (with index starting at 0)


    View Slide

  40. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    Let’s draw out how this might work with an example

    Given linked list 1->2->3, n = 1 (we want to return 1->2)
    First pass, we get length = 3. Since n = 1, that means we want to remove
    the 3 -1 = 2 node (with index starting at 0)


    As we iterate through the list..

    at node 1 -> numberOfNodesSeen = 0

    View Slide

  41. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    Let’s draw out how this might work with an example

    Given linked list 1->2->3, n = 1 (we want to return 1->2)
    First pass, we get length = 3. Since n = 1, that means we want to remove
    the 3 -1 = 2 node (with index starting at 0)


    As we iterate through the list..

    at node 1 -> numberOfNodesSeen = 0

    at node 2-> numberOfNodesSeen = 1

    View Slide

  42. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    Let’s draw out how this might work with an example

    Given linked list 1->2->3, n = 1 (we want to return 1->2)
    First pass, we get length = 3. Since n = 1, that means we want to remove
    the 3 -1 = 2 node (with index starting at 0)


    As we iterate through the list..

    at node 1 -> numberOfNodesSeen = 0

    at node 2-> numberOfNodesSeen = 1

    at node 3 -> numberOfNodesSeen = 2 -> at this point we need to set
    node 2’s next to be node 3’s next!

    View Slide

  43. Example: Remove Nth Node
    from End of List
    Our approach:

    1) make initial pass through linked list to get length

    2) make second pass to remove any reference to nth to last node


    Let’s draw out how this might work with an example

    Given linked list 1->2->3, n = 1 (we want to return 1->2)
    First pass, we get length = 3. Since n = 1, that means we want to remove
    the 3 -1 = 2 node (with index starting at 0)


    As we iterate through the list..

    at node 1 -> numberOfNodesSeen = 0, previousNode = null

    at node 2-> numberOfNodesSeen = 1, previousNode = 1

    at node 3 -> numberOfNodesSeen = 2, previousNode = 2 -> we set
    previousNode.next = node.next (node 3’s next = null)

    View Slide

  44. Breakout Rooms
    - Turn on your camera
    - Assign a timekeeper

    - Breakout rooms will close at 11:30 am PT

    - Take a 5 min break right before then!
    - Open the Course Portal and go to this week’s Session #2 tab

    - Read the At a Glance

    - Start with the Icebreaker!
    - If your pod needs help, post a message in the @se102-help-fall21 slack
    channel and tag @se102-tas

    View Slide

  45. Evaluating companies

    View Slide

  46. Evaluating companies
    Glassdoor reviews

    Researching current people who work at the company
    on LinkedIn

    View Slide

  47. Questions for me?

    View Slide

  48. Questions for me?
    Work Life Balance

    View Slide

  49. Questions for me?
    Work Life Balance
    - How does the team figure out what to work on in the
    next 3-6 months?

    - How does the team tackle tech debt?

    - What is a typical release process?

    - Weekly? Biweekly?

    - How does the team prepare for releases?

    - How is the release monitored afterwards?

    - Are there oncall schedules?

    View Slide

  50. Questions for me?
    Career Growth

    View Slide

  51. Questions for me?
    Career Growth
    - What do you see me working on in my first 3-6
    months on the job?

    - How do people on the team get feedback usually?

    View Slide

  52. Questions for me?
    General
    - What are some challenging projects you’ve worked
    on in the past 3-6 months?

    - What kind of meetings do you usually have in a
    week?

    View Slide

  53. Questions for me?
    Other questions?

    View Slide

  54. Survey

    View Slide