CPS 100e 6.1 What’s the Difference Here? l How does find-a-track work? Fast forward?

Slides:



Advertisements
Similar presentations
Chapter 22 Implementing lists: linked implementations.
Advertisements

Singly linked lists Doubly linked lists
Lists CS 3358.
Linked Lists.
DATA STRUCTURES USING C++ Chapter 5
Lists and the Collection Interface Chapter 4. Chapter Objectives To become familiar with the List interface To understand how to write an array-based.
Introduction to Linked Lists In your previous programming course, you saw how data is organized and processed sequentially using an array. You probably.
Data Structures: A Pseudocode Approach with C
COSC 1P03 Data Structures and Abstraction 5.1 Linear Linked Structures.
Linked Lists Compiled by Dr. Mohammad Alhawarat CHAPTER 04.
Lists and the Collection Interface Chapter 4. Chapter 4: Lists and the Collection Interface2 Chapter Objectives To become familiar with the List interface.
Fall 2007CS 2251 Lists and the Collection Interface Chapter 4.
Rossella Lau Lecture 4, DCO20105, Semester A, DCO Data structures and algorithms  Lecture 4: C++ and list  Usage of Vector and List  C++
CSC 212 – Data Structures Lecture 13: Linked Lists.
CPS 100, Spring From data to information to knowledge l Data that’s organized can be processed  Is this a requirement?  What does “organized”
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 15: Linked data structures.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Implementation of Linked List For more notes and topics visit: eITnotes.com.
CPS Data processing example l Scan a large (~ 10 7 bytes) file l Print the 20 most frequently used words together with counts of how often they.
CSE 131 Computer Science 1 Module 9: Linked Lists Using references to link objects Basic operations on linked lists Implementing a linked list of integers.
Lists 1. Introduction Data: A finite sequence of data items. Operations: Construction: Create an empty list Empty: Check if list is empty Insert: Add.
CPS 100, Spring From data to information l Data that’s organized can be processed  Is this a requirement?  What does “organized” means l Purpose.
CS 2430 Day 35. Agenda Introduction to linked lists Bag as linked list Stack as linked list.
Lists II. List ADT When using an array-based implementation of the List ADT we encounter two problems; 1. Overflow 2. Wasted Space These limitations are.
2014-T2 Lecture 19 School of Engineering and Computer Science, Victoria University of Wellington  Marcus Frean, Lindsay Groves, Peter Andreae, and John.
Slide 1 Linked Data Structures. Slide 2 Learning Objectives  Nodes and Linked Lists  Creating, searching  Linked List Applications  Stacks, queues.
CS342 Data Structures End-of-semester Review S2002.
Dynamic Array. An Array-Based Implementation - Summary Good things:  Fast, random access of elements  Very memory efficient, very little memory is required.
Lists Chapter 8. 2 Linked Lists As an ADT, a list is –finite sequence (possibly empty) of elements Operations commonly include: ConstructionAllocate &
CompSci 100e 7.1 Plan for the week l Review:  Union-Find l Understand linked lists from the bottom up and top-down  As clients of java.util.LinkedList.
Copyright © 2002 Pearson Education, Inc. Slide 1.
1 Linked Structures, LinkedSet References as Links Linear Linked Lists and Non-linear Structures Managing Linked Lists Data Encapsulation Separate from.
(c) University of Washington16-1 CSC 143 Java Linked Lists Reading: Ch. 20.
(c) University of Washington16-1 CSC 143 Java Lists via Links Reading: Ch. 23.
APS105 Lists. Structures Arrays allow a collection of elements –All of the same type How to collect elements of different types? –Structures; in C: struct.
12/23/2015Engineering Problem Solving with C++, second edition, J. Ingber 1 Engineering Problem Solving with C++, Etter/Ingber Chapter 9 An Introduction.
Copyright © 0 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Java From Control Structures through Data Structures by Tony.
1 Today’s Material List ADT –Definition List ADT Implementation: LinkedList.
List Interface and Linked List Mrs. Furman March 25, 2010.
Data Structures. Abstract Data Type A collection of related data is known as an abstract data type (ADT) Data Structure = ADT + Collection of functions.
CPS Review of Data Structures l We’ve studied concrete data structures/type (CDT)  Vectors Homogeneous aggregates supporting random access  Linked.
1 Linked List. Outline Introduction Insertion Description Deletion Description Basic Node Implementation Conclusion.
Data Structure & Algorithms
1 Linked List. 2 List A list refers to a sequence of data items  Example: An array The array index is used for accessing and manipulation of array elements.
CompSci 100E 19.1 Getting in front  Suppose we want to add a new element  At the back of a string or an ArrayList or a …  At the front of a string.
Compsci 100, Fall From data to information to knowledge l Data that’s organized can be processed  Is this a requirement?  What does “organized”
Linked Lists Chapter Introduction To The Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures.
slides adapted from Marty Stepp and Hélène Martin
CompSci 100e 7.1 Plan for the week l Review:  Boggle  Coding standards and inheritance l Understand linked lists from the bottom up and top-down  As.
Data Structures and Algorithm Analysis Dr. Ken Cosh Linked Lists.
UNIT-II Topics to be covered Singly linked list Circular linked list
Data Structure and Algorithm: CIT231 Lecture 6: Linked Lists DeSiaMorewww.desiamore.com/ifm1.
Linked Lists Source: presentation based on notes written by R.Kay, A. Hill and C.Noble ● Lists in general ● Lists indexed using pointer arrays ● Singly.
Linked List ADT used to store information in a list
Building Java Programs
Plan for the Week Review Big-Oh
From data to information
What’s the Difference Here?
Owen Astrachan Jeff Forbes October 19, 2017
Programming Abstractions
Linked Lists head One downside of arrays is that they have a fixed size. To solve this problem of fixed size, we’ll relax the constraint that the.
Introduction to Linked Lists
Lists.
Building Java Programs
Programming Abstractions
CSC 143 Java Linked Lists.
Building Java Programs
Lecture 7: Linked List Basics reading: 16.2
Linked List Intro CSCE 121.
Linked lists Low-level (concrete) data structure, used to implement higher-level structures Used to implement sequences/lists (see CList in Tapestry) Basis.
Presentation transcript:

CPS 100e 6.1 What’s the Difference Here? l How does find-a-track work? Fast forward?

CPS 100e 6.2 Contrast LinkedList and ArrayList l See ISimpleList, SimpleLinkedList, SimpleArrayList  Meant to illustrate concepts, not industrial-strength  Very similar to industrial-strength, however l ArrayList --- why is access O(1) or constant time?  Storage in memory is contiguous, all elements same size  Where is the 1 st element? 40 th ? 360 th ?  Doesn’t matter what’s in the ArrayList, everything is a pointer or a reference (what about null?)

CPS 100e 6.3 What about LinkedList? l Why is access of N th element linear time? l Why is adding to front constant-time O(1)? front

CPS 100e 6.4 ArrayLists and linked lists as ADTs l As an ADT (abstract data type) ArrayLists support  Constant-time or O(1) access to the k-th element  Amortized linear or O(n) storage/time with add Total storage used in n-element vector is approx. 2n, spread over all accesses/additions (why?)  Adding a new value in the middle of an ArrayList is expensive, linear or O(n) because shifting required l Linked lists as ADT  Constant-time or O(1) insertion/deletion anywhere, but…  Linear or O(n) time to find where, sequential search l Good for sparse structures: when data are scarce, allocate exactly as many list elements as needed, no wasted space/copying (e.g., what happens when vector grows?)

CPS 100e 6.5 Linked list applications l Remove element from middle of a collection, maintain order, no shifting. Add an element in the middle, no shifting  What’s the problem with a vector (array)?  Emacs visits several files, internally keeps a linked-list of buffers  Naively keep characters in a linked list, but in practice too much storage, need more esoteric data structures l What’s (3x 5 + 2x 3 + x + 5) + (2x 4 + 5x 3 + x 2 +4x) ?  As a vector (3, 0, 2, 0, 1, 5) and (0, 2, 5, 1, 4, 0)  As a list ((3,5), (2,3), (1,1), (5,0)) and ________?  Most polynomial operations sequentially visit terms, don’t need random access, do need “splicing” l What about (3x ) ?

CPS 100e 6.6 Linked list applications continued l If programming in C, there are no “growable-arrays”, so typically linked lists used when # elements in a collection varies, isn’t known, can’t be fixed at compile time  Could grow array, potentially expensive/wasteful especially if # elements is small.  Also need # elements in array, requires extra parameter  With linked list, one pointer used to access all the elements in a collection l Simulation/modeling of DNA gene-splicing  Given list of millions of CGTA… for DNA strand, find locations where new DNA/gene can be spliced in Remove target sequence, insert new sequence

CPS 100e 6.7 Linked lists, CDT and ADT l As an ADT  A list is empty, or contains an element and a list  ( ) or (x, (y, ( ) ) ) l As a picture l As a CDT (concrete data type) public class Node { Node p = new Node(); String value; p.value = “hello”; Node next; p.next = null; }; p 0

CPS 100e 6.8 Building linked lists l Add words to the front of a list (draw a picture)  Create new node with next pointing to list, reset start of list public class Node { String value; Node next; Node(String s, Node link){ value = s; next = link; } }; // … declarations here Node list = null; while (scanner.hasNext()) { list = new Node(scanner.next(), list); } l What about adding to the end of the list?

CPS 100e 6.9 Dissection of add-to-front l List initially empty l First node has first word l Each new word causes new node to be created  New node added to front l Rhs of operator = completely evaluated before assignment list A list = new Node(word,list); B Node(String s, Node link) { info = s; next = link;} list

CPS 100e 6.10 Standard list processing (iterative) l Visit all nodes once, e.g., count them or process them public int size(Node list){ int count = 0; while (list != null) { count++; list = list.next; } return count; } l What changes in code above if we change what “process” means?  Print nodes?  Append “s” to all strings in list?

CPS 100e 6.11 Building linked lists continued l What about adding a node to the end of the list?  Can we search and find the end?  If we do this every time, what’s complexity of building an N-node list? Why? l Alternatively, keep pointers to first and last nodes of list  If we add node to end, which pointer changes?  What about initially empty list: values of pointers? Will lead to consideration of header node to avoid special cases in writing code l What about keeping list in order, adding nodes by splicing into list? Issues in writing code? When do we stop searching?

CPS 100e 6.12 Standard list processing (recursive) l Visit all nodes once, e.g., count them public int recsize(Node list) { if (list == null) return 0; return 1 + recsize(list.next); } l Base case is almost always empty list: null pointer  Must return correct value, perform correct action  Recursive calls use this value/state to anchor recursion  Sometimes one node list also used, two “base” cases l Recursive calls make progress towards base case  Almost always using list.next as argument

CPS 100e 6.13 Recursion with pictures l Counting recursively int recsize(Node list){ if (list == null) return 0; return 1 + recsize(list.next); } recsize(Node list) return 1+ recsize(list.next) recsize(Node list) return 1+ recsize(list.next) recsize(Node list) return 1+ recsize(list.next) recsize(Node list) return 1+ recsize(list.next) System.out.println(recsize(ptr)); ptr

CPS 100e 6.14 Recursion and linked lists l Print nodes in reverse order  Print all but first node and… Print first node before or after other printing? public void print(Node list) { if (list != null) { } print(list.next); System.out.println(list.info); print(list.next);

CPS 100e 6.15 Complexity Practice l What is complexity of Build ? (what does it do?) public Node build(int n) { if (null == n) return null; Node first = new Node(n, build(n-1)); for(int k = 0; k < n-1; k++) { first = new Node(n,first); } return first; } l Write an expression for T(n) and for T(0), solve.  Let T(n) be time for build to execute with n-node list  T(n) = T(n-1) + O(n)

CPS 100e 6.16 Changing a linked list recursively l Pass list to method, return altered list, assign to list  Idiom for changing value parameters list = change(list, “apple”); public Node change(Node list, String key) { if (list != null) { list.next = change(list.next, key); if (list.info.equals(key)) return list.next; else return list; } return null; } l What does this code do? How can we reason about it?  Empty list, one-node list, two-node list, n -node list  Similar to proof by induction