Pārlūkot izejas kodu

Split Linked Lists over 2 days.

John Washam 9 gadi atpakaļ
vecāks
revīzija
bba72aab57
1 mainītis faili ar 32 papildinājumiem un 25 dzēšanām
  1. 32 25
      plan.txt

+ 32 - 25
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,36 +175,36 @@ 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
             - 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
-            - 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
+    * - 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):
+        * - 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,7 +212,9 @@ Queues
     - see: https://class.coursera.org/algs4partI-010/lecture
     - https://www.coursera.org/learn/data-structures/lecture/EShpq/queues
 Heaps
-    - https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees
+    - Description:
+        - https://en.wikipedia.org/wiki/Heap_(data_structure)
+        - https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees
     - min heap
     - max heap
 Priority Queue
@@ -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