Week 11 Reflection
Time flies, I cannot believe that we come to the end of semester this fast. Compared to the previous week, I feel like I have a more profound understanding of linked list. During week 4, linked list was exposed to me for the first time. At that time, I was totally clueless about this new field. The only idea about it was this is a more advanced version of built-in list. It is faster to delete items from or add new items to itself. However, I have no idea about why. The reason was mysterious back to few weeks before.
Nevertheless, after assignment 2 and many other practice, I have a deeper insight into it. Basically, constructing a linked list is equal to setting up reference between different nodes. A complete linked list is actually a track from the first node in the list to the last one. Each node points to the other one until none left. In this way, we do not need to store all the items contiguously since we built reference for all of them, which is different from built-in list. This structure is also the reason that manipulation such as inserting or removing can be acted on linked list much more easily. However, there are also some disadvantages coming with this structure. For example, linked list uses more memory since it needs to store all its pointers. Also because of the way it stores its nodes, it takes more time to access to individual item inside the list.
Besides, I found both tree and binary tree are the mutation of linked list. The only difference is linked list has only one pointer for each node, while the other two have more. The basic concept is very similar here. In assignment 2, we were asked to find the solution, which is a node, to given puzzle. That solution node is exactly a doubly linked list with reference both sides.
In a nutshell, linked list is all about reference(pointer). Once all the pointers are set up, a linked list is constructed.








