Week 3: List-based ADTs ------------------------ This week, we basically reviewed arrays, linked-lists, double-linked lists, and circular lists. We reviewed the general structure, and classical methods (insertion, removal, access to value, etc.). We compared lists against arrays, in terms of time complexity. This was an opportunity to define and consider best-case and worst-case time complexity. We considered two practical problems: 1. representing and handling univariate polynomial expressions with real coefficients, using linked-lists. We defined the corresponding data structure, and described the algorithm that takes as input two such polynomial expressions, and outputs a third polynomial that is the sum of the first two ones. We discussed the precondition such that polynomial expressions are assumed to be sorted in ascending order of the powers of the monomials. 2. the Josephus problem. We compared the implementation depending on whether we use a linked-list or an array to represent the people in the Josephus circle.