Question of the Day A friend tells the truth when saying: A road near my house runs directly north-south; I get on the road facing north, drive for a mile, & end up south of where I started How does he do it?
Question of the Day A friend tells the truth when saying: A road near my house runs directly north-south; I get on the road facing north, drive for a mile, & end up south of where I started How does he do it? Note: He (anyone) doesn't live near the north pole
Question of the Day
Are created using linear sequence of nodes Each Node contains: Reference to data (element) stored in Node Link to next Node in linked list Singly Linked List elemnextelemnextelemnextelemnext Node head size 4 SLinkedList
Node s Are Not Enough Node s are workers making linked lists possible Necessary for the smooth running of linked list Treated like other jobs smoothing things out Added & removed as needed Used only to keep the list running
Node s Are Not Enough
Node s are workers making linked lists possible Necessary for the smooth running of linked list Treated like other jobs smoothing things out Added & removed as needed Used only to keep the list running Never allowed outside of the linked list
Node s Are Not Enough
T removeFirst()
head size 4 head size 3
T removeMiddle(Node prev) head size 4 head size 3
Traversing a List Often need to go through items in a list Return element stored by the n th Node Search and find if element is in list Count elements larger/smaller/equal than some value Add an element at list’s end Cannot do this directly with linked lists Arrays have brackets, but linked lists use objects Must traverse list by travelling from Node to Node Relies heavily on understanding how objects work
void addLast(T el) head size 4 head size 5
Link to previous node in list also in each node Each DNode contains: Element (data) reference Link to next DNode Prev(ious) DNode also linked Doubly Linked List elem DNode Instance nextprev
Link to previous node in list also in each node Each DNode contains: Element (data) reference Link to next DNode Prev(ious) DNode also linked Doubly Linked List Doubly Linked List With 4 Elements
Link to previous node in list also in each node Each DNode contains: Element (data) reference Link to next DNode Prev(ious) DNode also linked Doubly Linked List Sequence of 4 DNode s
Link to previous node in list also in each node Each DNode contains: Element (data) reference Link to next DNode Prev(ious) DNode also linked Doubly Linked List Doubly Linked List With 4 Elements & Sentinels
Link to previous node in list also in each node Each DNode contains: Element (data) reference Link to next DNode Prev(ious) DNode also linked Doubly Linked List Doubly Linked List With 4 Elements & Sentinels header trailer size 4 DList
Doubly Linked List DNode could extend Node next & elem fields are needed by both classes Only difference is prev field added by DNode DList is not subclass of SList Both classes define identical methods… …are entirely different when implemented
Identical nodes as singly or doubly linked list This example shows singly linked variety Reference to first node stored in last node Notice this becomes a big circle Now you know idea behind name Circular Linked List head size 4
Your Turn Get into your groups and complete activity
For Next Lecture Read GT3.5 for Wednesday What is recursion? Why does recursion rock so much? How do you write a recursive method? Week #6 weekly assignment available now Since no school Tues., assignment due Wednesday Programming assignment #1 delayed until Wed. If you all agree, project would be much cooler & fun Pulls everything together & sees how much you know