Split Linked Lists over 2 days.
This commit is contained in:
parent
6472d3d1be
commit
bba72aab57
47
plan.txt
47
plan.txt
@ -101,7 +101,7 @@ Each day I take one subject from the list below, watch videos about that subject
|
||||
C - using structs and functions that take a struct * and something else as args.
|
||||
C++ - without using built-in types
|
||||
C++ - using built-in types, like STL's std::list for a linked list
|
||||
Python - without using built-in types (to keep practicing Python)
|
||||
Python - using built-in types (to keep practicing Python)
|
||||
and write tests to ensure I'm doing it right, sometimes just using simple assert() statements
|
||||
You may do Java or something else, this is just my thing.
|
||||
|
||||
@ -110,6 +110,8 @@ Why code in all of these?
|
||||
Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python))
|
||||
Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production)
|
||||
|
||||
I may not have time to do all of these for every subject, but I'll try.
|
||||
|
||||
You don't need to memorize the guts of every algorithm.
|
||||
|
||||
Write code on a whiteboard, not a computer. Test with some sample inputs.
|
||||
@ -138,7 +140,7 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
||||
- Amortized Analysis: https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN
|
||||
- Illustrating "Big O": https://class.coursera.org/algorithmicthink1-004/lecture/63
|
||||
- Cheat sheet: http://bigocheatsheet.com/
|
||||
Arrays
|
||||
* - Arrays: (Implement an automatically resizing vector)
|
||||
* - Description:
|
||||
- Arrays: https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
|
||||
- Arrays: https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html
|
||||
@ -173,9 +175,9 @@ Arrays
|
||||
* - Space
|
||||
- contiguous in memory, so proximity helps performance
|
||||
- space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n)
|
||||
Linked lists
|
||||
- singly-linked
|
||||
* - Description: https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists
|
||||
Singly Linked List
|
||||
* - Description:
|
||||
* - https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists
|
||||
* - Lynda.com:
|
||||
- https://www.lynda.com/Developer-Programming-Foundations-tutorials/Introduction-lists/149042/177115-4.html
|
||||
- https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-basic-list-implementations/149042/177116-4.html
|
||||
@ -185,24 +187,24 @@ Linked lists
|
||||
- not the whole video, just portions about Node struct and memory allocation.
|
||||
* - why you should avoid linked lists:
|
||||
- https://www.youtube.com/watch?v=YQs6IC-vgmo
|
||||
- implement (with tail pointer), item is the data item in a node:
|
||||
- push_front
|
||||
- get_front
|
||||
- pop_front
|
||||
- insert_before(node, value)
|
||||
- insert_after(node, value)
|
||||
- size()
|
||||
- is_empty()
|
||||
- find(value) - assume each item is unique
|
||||
- remove(value) - assume each item is unique
|
||||
- reverse - reverses the list
|
||||
- doubly-linked list
|
||||
- implement (with tail pointer):
|
||||
* - size() - returns number of data elements in list
|
||||
* - empty() - bool returns true if empty
|
||||
* - front() - get value of front item
|
||||
* - back() - get value of end item
|
||||
* - push_front(value) - adds an item to the front of the list
|
||||
* - pop_front() - remove front item
|
||||
* - push_back(value) - adds an item at the end
|
||||
* - pop_back() - removes end item
|
||||
- insert(index, value) - insert value at index, so current item at that index is pointed to by next at index
|
||||
- erase(index) - removes node at given index
|
||||
- remove(value) - remove all elements with this value
|
||||
- find(value) - return pointer to the node that has this value
|
||||
- reverse() - reverses the list
|
||||
Doubly-linked List
|
||||
- Description: https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
|
||||
- implement:
|
||||
- same as above for singly linked list
|
||||
- push_back()
|
||||
- get_back()
|
||||
- pop_back()
|
||||
Stacks
|
||||
- see: https://class.coursera.org/algs4partI-010/lecture
|
||||
- https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks
|
||||
@ -210,6 +212,8 @@ Queues
|
||||
- see: https://class.coursera.org/algs4partI-010/lecture
|
||||
- https://www.coursera.org/learn/data-structures/lecture/EShpq/queues
|
||||
Heaps
|
||||
- Description:
|
||||
- https://en.wikipedia.org/wiki/Heap_(data_structure)
|
||||
- https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees
|
||||
- min heap
|
||||
- max heap
|
||||
@ -385,6 +389,9 @@ Once you're closer to the interview:
|
||||
|
||||
Extras that can't hurt:
|
||||
|
||||
Computer Security:
|
||||
- MIT (23 videos): https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh
|
||||
|
||||
Information theory:
|
||||
- Markov processes:
|
||||
- https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation
|
||||
|
Loading…
x
Reference in New Issue
Block a user