CS 112 - Week 10 Lecture 1 - 2022-10-25 TODAY WE WILL * announcements * start intro to LINKED LISTS * prep for next class ----- * Visiting Speaker - Thursday, October 27, 4:30 - 5:30 pm, FH 125 Dr. Dipak Ghosal, UC Davis CS Chair - Next Generation Data Centers * Exam 2 - this Friday, during lab! * submit any final improved pieces from HWs 4-7 by 11:59 pm TONIGHT, so example solutions can hopefully become visible by 12:01 am * if interested in Exam 2 Study Guide bonus, submit that photo/scan of your HANDWRITTEN Exam 2 study sheet by 9:00 am on FRIDAY ===== intro to LINKED LISTS! ===== * reading: Savitch, Chapter 13 -- BUT!!! note that we are approaching this DIFFERENTLY than Savitch, so keep that in mind * linked lists are another of "classic" data structures, and, like arrays, (and sometimes along WITH arrays), are used in IMPLEMENTING other data structures; * like an array, a linked list is a collection of data; * tend to allocate space for its elements as you add each element; * the elements are not as directly accessible as those in an array BUT, it is easier to insert and delete from the "middle" of a linked list than from the "middle" of an array... * there are interesting TRADEOFFS between these when you are figuring out which to use for some task; * so: array elements are located right next to each other linked list elements are not -- they can be anywhere! SO in the "classic" implementation of a linked list, each element includes where to find the next element; ===== quick aside: typedef ===== * Savitch, Ch. 9, Section 9.1 You can assign a NAME to a type definition, and use that type name to declare variables, method headers, etc. C++ keyword typedef makes this possible: typedef known_type new_type_name; typedef int NodeDataType; ...we'll use this in our Node class... * now that I have a Node class -- ideally I'd now make a List class (or a Stack class, or a Queue class, etc.!) BUT let's start with just some functions that would be useful on a not-yet-class linked list * we'll say: a linked list has a head pointer, a pointer to its first node Node *head_ptr; * empty list? head_ptr should be: head_ptr = NULL; * let's make a set of linked list functions, with headers in linked-list-functs.h and implementations in linked-list-functs.cpp