Moved arrays to beginning.

This commit is contained in:
John Washam 2016-06-06 11:54:06 -07:00
parent 88b03327e3
commit 7e8fb4dd65

View File

@ -2,6 +2,9 @@
## Knowledge: ## Knowledge:
########################################################################################## ##########################################################################################
I put a * at the beginning of a line when I'm done with it. When all sub-items are done, I put a * the top level,
meaning the entire block is done.
* - how computers process a program: * - how computers process a program:
* - https://www.youtube.com/watch?v=42KTvGYQYnA * - https://www.youtube.com/watch?v=42KTvGYQYnA
* - https://www.youtube.com/watch?v=Mv2XQgpbTNE * - https://www.youtube.com/watch?v=Mv2XQgpbTNE
@ -55,6 +58,7 @@ Each day I take one subject from the list below, watch videos about that subject
C++ - using built-in types, like STL's std::list for a linked list C++ - using built-in types, like STL's std::list for a linked list
Python - without using built-in types Python - without using built-in types
and write tests to ensure I'm doing it right and write tests to ensure I'm doing it right
Each subject does not require a whole day to be able to understand it fully.
Why code in all of these? Why code in all of these?
Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember)
Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python))
@ -62,23 +66,18 @@ Why code in all of these?
---------------------------------------------------------------- ----------------------------------------------------------------
linked lists
- singly-linked
* - Description: https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists
* - C Code (can jump to 6 minutes in): https://www.youtube.com/watch?v=KjtPAW5jyo8
- Java Code: https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/uwobd/core-java-code-for-a-linked-list
- doubly-linked
- Description: https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
- reverse a singly-linked list
- why you should avoid linked lists:
- https://www.youtube.com/watch?v=YQs6IC-vgmo
stacks
- see: https://class.coursera.org/algs4partI-010/lecture
- https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks
queues
- see: https://class.coursera.org/algs4partI-010/lecture
- https://www.coursera.org/learn/data-structures/lecture/EShpq/queues
arrays arrays
- No need to spend a day on this.
- Implement:
- raw data array with allocated memory
- at(index) - returns item at given index
- append(item)
- insert(index, item)
- prepend(item) - can use insert above at index 0
- delete(index)
- remove(item)
- find(item)
- Nothing to implement, but practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing.
- https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays - https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
- https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays - https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays
- Time - Time
@ -87,6 +86,40 @@ arrays
- Space - Space
- contiguous in memory, so proximity helps performance - contiguous in memory, so proximity helps performance
- space needed = size of object * number of items to store - space needed = size of object * number of items to store
linked lists
- singly-linked
* - 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
- https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-singly-doubly-linked-lists/149042/177117-4.html
- https://www.lynda.com/Developer-Programming-Foundations-tutorials/List-support-across-languages/149042/177118-4.html
* - C Code: https://www.youtube.com/watch?v=QN6FPiD0Gzo
- 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
- push_back
- get_back
- pop_back
- insert_before(node, item)
- insert_after(node, item)
- size()
- is_empty()
- find(item) - assume each item is unique
- remove(item) - assume each item is unique
- doubly-linked list
- Description: https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
- reverse a singly-linked list
stacks
- see: https://class.coursera.org/algs4partI-010/lecture
- https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks
queues
- see: https://class.coursera.org/algs4partI-010/lecture
- https://www.coursera.org/learn/data-structures/lecture/EShpq/queues
Vectors Vectors
- Vector calculus ? - Vector calculus ?
heaps heaps