Arrays and Linked Lists "All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101,

Slides:



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

Singly linked lists Doubly linked lists
Lists CS 3358.
Stacks, Queues, and Linked Lists
Linked Lists.
Linear Lists – Linked List Representation
DATA STRUCTURES USING C++ Chapter 5
Linked List 1. Introduction to Linked List 2. Node Class 3. Linked List 4. The Bag Class with Linked List.
Chapter 17 Linked List Saurav Karmakar Spring 2007.
M180: Data Structures & Algorithms in Java
Data Structures: A Pseudocode Approach with C
Linked Lists Compiled by Dr. Mohammad Alhawarat CHAPTER 04.
Topic 11 Linked Lists -Joel Spolsky
CS 307 Fundamentals of Computer Science 1 Linked Lists many slides taken from Mike Scott, UT Austin.
Unit 11 1 Unit 11: Data Structures H We explore some simple techniques for organizing and managing information H This unit focuses on: Abstract Data Types.
CS 206 Introduction to Computer Science II 09 / 17 / 2008 Instructor: Michael Eckmann.
1 Data Structures  We can now explore some advanced techniques for organizing and managing information  Chapter 12 of the book focuses on: dynamic structures.
Chapter 4 Linked Structures. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 4-2 Chapter Objectives Describe the use of references to create.
Summary of lectures (1 to 11)
COMPSCI 125 Spring 2005 ©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. Odds and Ends Strings (from Chapter 9) StringTokenizer.
Chapter 3: Arrays, Linked Lists, and Recursion
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Custom Templatized Data Structures.
© 2006 Pearson Education Chapter 12: Data Structures Presentation slides for Java Software Solutions for AP* Computer Science A 2nd Edition by John Lewis,
Lists Ellen Walker CPSC 201 Data Structures Hiram College.
Lecture 14 Linked Lists 14-1 Richard Gesick. Linked Lists Dynamic data structures can grow and shrink at execution time. A linked list is a linear collection.
A first look an ADTs Solving a problem involves processing data, and an important part of the solution is the careful organization of the data In order.
ArrayList Class An ArrayList is an object that contains a sequence of elements that are ordered by position. An ArrayList is an object that contains a.
CS 307 Fundamentals of Computer ScienceLinked Lists 1 Topic 14 Linked Lists "All the kids who did great in high school writing pong games in BASIC for.
4-1 Topic 6 Linked Data Structures. 4-2 Objectives Describe linked structures Compare linked structures to array- based structures Explore the techniques.
Chapter 12: Collections by Lewis and Loftus (Updated by Dan Fleck) Coming up: Collections.
Dynamic Array. An Array-Based Implementation - Summary Good things:  Fast, random access of elements  Very memory efficient, very little memory is required.
Week 4 - Monday.  What did we talk about last time?  Queues  Implementing queues with circular arrays.
Lists Chapter 8. 2 Linked Lists As an ADT, a list is –finite sequence (possibly empty) of elements Operations commonly include: ConstructionAllocate &
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.
Linked Lists part 1 CS 244 Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics, and Computer Science University.
Winter 2006CISC121 - Prof. McLeod1 Stuff Deadline for assn 3 extended to Monday, the 13 th. Please note that the testing class for assn 3 has changed.
Review 1 Polish Notation Prefix Infix Postfix Precedence of Operators Converting Infix to Postfix Evaluating Postfix.
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.
M180: Data Structures & Algorithms in Java Linked Lists Arab Open University 1.
Linked Lists Revision Based on: v/
List Interface and Linked List Mrs. Furman March 25, 2010.
Chapter 5 Linked List by Before you learn Linked List 3 rd level of Data Structures Intermediate Level of Understanding for C++ Please.
Data Structures Doubly and Circular Lists Lecture 07: Linked Lists
Week 4 - Friday.  What did we talk about last time?  Continued doubly linked list implementation  Linked lists with iterators.
CS 46B: Introduction to Data Structures July 23 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak.
Data Structure & Algorithms
1 Chapter 4 Unordered List. 2 Learning Objectives ● Describe the properties of an unordered list. ● Study sequential search and analyze its worst- case.
Linked Lists Data Structures and Algorithms CS 244 Brent M. Dingle, Ph.D. Department of Mathematics, Statistics, and Computer Science University of Wisconsin.
Linked Lists CS 367 – Introduction to Data Structures.
Lecture 6 of Computer Science II
UNIT – I Linked Lists.
Big-O notation Linked lists
CS2006- Data Structures I Chapter 5 Linked Lists I.
Programming Abstractions
LINKED LISTS CSCD Linked Lists.
Top Ten Words that Almost Rhyme with “Peas”
Topic 11 Linked Lists -Joel Spolsky
Arrays and Linked Lists
Linked Lists.
Programming Abstractions
Programming II (CS300) Chapter 07: Linked Lists and Iterators
CS2013 Lecture 4 John Hurley Cal State LA.
CSC 143 Java Linked Lists.
Intro to OOP with Java, C. Thomas Wu By : Zanariah Idrus
Programming II (CS300) Chapter 07: Linked Lists
TCSS 143, Autumn 2004 Lecture Notes
Topic 11 Linked Lists -Joel Spolsky
Presentation transcript:

Arrays and Linked Lists "All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101, a data structures course, and when they hit the pointers business, their brains would just totally explode, and the next thing you knew, they were majoring in Political Science because law school seemed like a better idea." - Joel Spolsky

Question 1  What is output by the following code? ArrayList a1 = new ArrayList (); ArrayList a2 = new ArrayList (); a1.add(12); a2.add(12); System.out.println( a1 == a2 ); A.No output due to syntax error B.No output due to runtime error C. false D. true CS Computer Science II 2

3 Dynamic Data Structures  Dynamic data structures –They grow and shrink one element at a time, normally without some of the inefficiencies of arrays –as opposed to a static container such as an array  Big O of Array Manipulations –Access the kth element? –Add or delete an element in the middle of the array while maintaining relative order? –Adding element at the end of array? Space available? No space available? –Add element at beginning of an array?

CS Computer Science II 4 Object References  Recall that an object reference is a variable that stores the address of an object  A reference can also be called a pointer  They are often depicted graphically: student John Smith

CS Computer Science II 5 References as Links  Object references can be used to create links between objects  Suppose a Student class contained a reference to another Student object John Smith Jane Jones

CS Computer Science II 6 References as Links  References can be used to create a variety of linked structures, such as a linked list: studentList

CS Computer Science II 7 Linked Lists  A linear collection of self-referential objects, called nodes, connected by other links –linear: for every node in the list, there is one and only one node that precedes it (except for possibly the first node, which may have no predecessor,) and there is one and only one node that succeeds it, (except for possibly the last node, which may have no successor) –self-referential: a node that has the ability to refer to another node of the same type, or even to refer to itself –node: contains data of any type, including a reference to another node of the same data type, or to nodes of different data types –Usually a list will have a beginning and an end; the first element in the list is accessed by a reference to that class, and the last node in the list will have a reference that is set to null

CS Computer Science II 8  Linked lists are dynamic, so they can grow or shrink as necessary  Linked lists are non-contiguous; the logical sequence of items in the structure is decoupled from any physical ordering in memory Advantages of linked lists

CS Computer Science II 9 Nodes and Lists  A different way of implementing a list  Each element of a Linked List is a separate Node object.  Each Node tracks a single piece of data plus a reference (pointer) to the next  Create a new Node very time we add something to the List  Remove nodes when item removed from list and allow garbage collector to reclaim that memory

CS Computer Science II 10 A Node Class public class Node { private E myData; private Node myNext; public Node() {myData = null; myNext = null;} public Node(E data, Node next) {myData = data; myNext = next; } public E getData() {return myData;} public Node getNext() {return myNext;} public void setData(E data) {myData = data;} public void setNext(Node next) {myNext = next;} }

CS Computer Science II 11 One Implementation of a Linked List  The Nodes show on the previous slide are singly linked –a node refers only to the next node in the structure –it is also possible to have doubly linked nodes. –the node has a reference to the next node in the structure and the previous node in the structure as well  How is the end of the list indicated –myNext = null for last node –a separate dummy node class / object

CS Computer Science II 12 A Linked List Implementation public class LinkedList implements IList private Node head; private Node tail; private int size; public LinkedList(){ head = null; tail = null; size = 0; } LinkedList list = new LinkedList (); LinkedList myHead iMySize myTail null 0

CS Computer Science II 13 Writing Methods  When trying to code methods for Linked Lists draw pictures! –If you don't draw pictures of what you are trying to do it is very easy to make mistakes!

CS Computer Science II 14 add method  add to the end of list  special case if empty  steps on following slides  public void add(E obj)

CS Computer Science II 15 Add Element - List Empty (Before) headtailsize null 0 Object item

CS Computer Science II 16 Add Element - List Empty (After) headtailsize 1 String Node myDatamyNext null

CS Computer Science II 17 Add Element - List Not Empty (Before) 1 String Node myDatamyNext null headtailsize String item

CS Computer Science II 18 Add Element - List Not Empty (After) 2 String Node myDatamyNext headtailsize String Node myDatamyNext null

CS Computer Science II 19 Code for default add  public void add(E obj)

Question 2  What is the worst case Big O for adding to the end of an array based list and a linked list? The lists already contain N items. Array Linked List A.O(1)O(1) B.O(N)O(N) C.O(logN)O(1) D.O(1)O(N) E.O(N)O(1) CS Computer Science II 20

CS Computer Science II 21 Code for addFront  add to front of list  public void addFront(E obj)  How does this compare to adding at the front of an array based list?

Question 3  What is the Big O for adding to the front of an array based list and a linked list? The lists already contain N items. Array Linked List A.O(1)O(1) B.O(N)O(1) C.O(logN)O(1) D.O(1)O(N) E.O(N)O(N) CS Computer Science II 22

CS Computer Science II 23 Code for Insert  public void insert(int pos, E obj)  Must be careful not to break the chain!  Where do we need to go?  Special cases?

Question 4  What is the Big O for inserting an element into the middle of an array based list and into the middle of a linked list? Each list already contains N items. Array Linked List A.O(N)O(N) B.O(N)O(1) C.O(logN)O(1) D.O(logN)O(logN) E.O(1)O(N) CS Computer Science II 24

Question 5  What is the Big O for getting an element based on position from an array based list and from a linked list? Each list contains N items. In other words: E get(int pos) Array basedLinked List A.O(1)O(N) B.O(N)O(1) C.O(logN)O(1) D.O(logN)O(N) E.O(N)O(N) CS Computer Science II 25

CS Computer Science II 26 Code for get  public E get(int pos)  The downside of Linked Lists

CS Computer Science II 27 Code for remove  public E remove(int pos)

CS Computer Science II 28 Why Use Linked List  What operations with a Linked List faster than the version from an array?

CS Computer Science II 29 Iterators for Linked Lists  What is the Big O of the following code? LinkedList list; list = new LinkedList (); // code to fill list with N elements //Big O of following code? for(int i = 0; i < list.size(); i++) System.out.println( list.get(i) ); A.O(N)B. O(2 N )C. O(NlogN) D. O(N 2 )E. O(N 3 )

Array Efficiency MethodArray add add( index, value ) indexOf get remove set size Method add O(1) add( index, value ) O(N) indexOf O(N) get O(1) remove O(N) set O(1) size O(1)

Linked List Efficiency MethodLinked List add add( index, value ) indexOf get remove set size Method add O(1) add( index, value ) O(N) indexOf O(N) get O(1) remove O(N) set O(1) size O(1)

CS Computer Science II 32 Other Possible Features of Linked Lists  Doubly Linked  Circular  Dummy Nodes for first and last node in list public class DLNode { private E myData; private DLNode myNext; private DLNode myPrevious; }

CS Computer Science II 33 Dummy Nodes  Use of Dummy Nodes for a Doubly Linked List removes most special cases  Also could make the Double Linked List circular

CS Computer Science II 34 Doubly Linked List add  public void add(E obj)

CS Computer Science II 35 Insert for Doubly Linked List  public void insert(int pos, E obj)