Linked Lists. It s all connected

Size: px
Start display at page:

Download "Linked Lists. It s all connected"

Transcription

1 Linked Lists It s all connected

2 Linked list: a data structure used to represent an ordered list Consists of a sequence of nodes A node consists of a data item and a reference to the next node -- the connecting reference is called a link Links keep nodes in sequence Last node s link is assigned null Entire list is accessed via the first node in the list, usually called the head node 2

3 Linked Lists vs. Arrays Arrays: indexed, so random-access relatively difficult to keep data ordered; insertion and deletion relatively costly Linked Lists: access via reference to start; no random access relatively easy to keep ordered; insertion and deletion relatively efficient

4 Node structure public class Node { private int data; private Node link; Data type is for data member declared as int as an example could be any type Node contains a reference to itself -- actual use is as reference to another Node 4

5 Portrait of a linked list List begins with head node keeps track of list front may or may not contain data; if it doesn t, it s a dummy node A list may also have a tail node to keep track of the end of the list could also be a dummy 5

6 Portrait of a linked list Head and tail nodes illustrated here are pointers to the first and last nodes in the list, respectively tail head 10 data 15 data 7 data NULL link link link 6

7 Accessing list members Every node has a link through which it can be accessed this is the link member of the previous node For example, in the list from the previous slide, head.link refers to the second node in the list the data in the first node is head. data head.link.data is a reference to the data in the second node 7

8 Operations on Nodes Constructor: creates Node with specified data and link Accessors & mutators for data and link 8

9 Constructors public Node(int initialdata, Node initiallink) { data = initialdata; link = initiallink; public Node () { data = 0; link = null; 9

10 Accessors & Mutators public int getdata () { return data; public void setdata (int newdata) { data = newdata; public Node getlink() { return link; public void setlink (Node newlink) { link = newlink; 10

11 Operations on Linked Lists Inserting a node at the front at any position other than the front Removing a node from the front from any other position Removing all nodes 11

12 More Operations on Linked Lists Finding the length of a list Finding a target value in a list Finding a value at a specified position in a list Making a copy of a list Making a copy of part of a list 12

13 Inserting a Node a List Front The great advantage of working at the front of the list is: we have a built-in reference here (head pointer) We can simply construct the new node with the data we want to add as the first argument and the existing head pointer as the second argument The next slide illustrates the process

14 Inserting data at front of list Example: adds node containing 4 to front of list: head = new Node(4, head); 4 data link head 10 data 15 data 7 data link link null link

15 Inserting data elsewhere in list If a tail pointer is used, insertion at list end is as simple as at start, but every other position requires a little more work A linked list, unlike an array, does not provide a random access mechanism to data in the middle The easiest way to insert a node in the middle of list is to simply invoke the insert at head routine, recognizing that every node is the head pointer of a list of nodes that follow it (think recursively!) The difficulty comes in getting access to the before node to act as head pointer we ll look at this after illustrating the insertion method

16 Insertion in the middle Example: adds node containing 8 between 10 & 15: before.setlink(new Node(8, before.getlink()); 4 data head link before 10 data 15 data 7 data link link null link

17 But where do we get before? List traversal, that s how Traversing the list means proceeding through the list, starting at the front, and visiting each node in turn This operation is the basis for all of the search functions on a list, including finding the list length We ll look at the length-finding operation first

18 Code for listlength public static int listlength(node head) { Node cursor; int answer; answer = 0; for (cursor = head; cursor!= null; cursor = cursor.getlink()) answer++; return answer; linklist2 18

19 Finding a target value in a list Traverse list, using same strategy as in listlength method If target is found, return its node If target is not found and cursor reaches end of list, return null linklist2 19

20 Code for listsearch public static Node listsearch(node head, int target) { Node cursor = null; for (cursor = head; cursor!= null && target!= cursor.getdata(); cursor = cursor.getlink()); return cursor; linklist2 20

21 Finding value at specific location Traverse list to current position, or until cursor is null Return value of cursor once list has been traversed linklist2 21

22 Code for listposition public static Node listposition(node head, int position) { Node cursor; int i; if (position <= 0) throw new IllegalArgumentException ("position is not positive"); cursor = head; for (i = 1; (i < position) && (cursor!= null); i++) cursor = cursor.getlink(); return cursor; linklist2 22

23 Removing a node Again, this is easiest to do at the front of the list Removal from the middle of a list involves a process similar to the one we used to insert in the middle

24 Removing the Head Node Removal of the first node is easily accomplished with the following instruction: head = head.getlink(); head null 24

25 Removing the Head Node Here s what the linked list looks like after the removal finishes. Automatic garbage collection takes care of removing the node that is no longer part of the list head_ptr null 25

26 Removing a Node from elsewhere in the list If we want to remove a node from somewhere besides the front of the list, the process is a bit more complicated As with list insertion, the key idea is to make sure that we never lose our grip on the rest of the list while we re making changes to a particular node Again, we will assume for the moment that we already have a reference to the node previous to the one we want to remove 26

27 Removing a node that is not at the head As with insertion, we could accomplish this task with an instruction like the following: previous_ptr.setlink (previous_ptr.getlink().getlink()); or by using the method in the Node class: public void removenodeafter( ) { link = link.link; 27

28 Copying a Linked List: How not to do it Because we always have a reference to a head pointer, it s tempting to try copying a list using just the insertion technique we already know: Node newlist = null; for (Node cursor = head; cursor!= null; cursor = cursor.getlink()) newlist = new Node (cursor.getdata(), newlist); linklist2 28

29 A better way The code on the previous slide will traverse the original list (referenced by head) and copy all of the nodes, but they will end up in reverse of their original order A better way involves using a tail pointer for the new list, adding each new node after the last node instead of before the first one The listcopy method is presented on the next slide linklist2 29

30 Code for listcopy public static Node listcopy(node source) { Node copyhead; Node copytail; if (source == null) return null; copyhead = new Node(source.data, null); copytail = copyhead; while (source.link!= null) { source = source.link; copytail.addnodeafter(source.data); copytail = copytail.link; return copyhead; linklist2 30

31 Copying a list with a tail reference As mentioned before, it is sometimes useful to keep track of both the head and tail of a linked list Unfortunately, Java doesn t permit us to have more than one return value from a method or does it? Not really, but kind of we can return an array from the method, and that array can contain multiple values linklist2 31

32 Copying list with tail reference public static Node[ ] listcopywithtail(node source) { Node copyhead; Node copytail; Node[ ] answer = new Node[2]; if (source == null) return answer; copyhead = new Node(source.data, null); copytail = copyhead; while (source.link!= null) { source = source.link; copytail.addnodeafter(source.data); copytail = copytail.link; answer[0] = copyhead; answer[1] = copytail; return answer; linklist2 32

33 Copying part of a linked list Sometimes we only need a portion of a linked list, rather than a copy of the entire list The listpart method, shown on the next slide, handles this situation The two parameters, start and end, are references to the beginning and end of the part of the list we wish to copy linklist2 33

34 listpart method public static Node[ ] listpart(node start, Node end){ Node copyhead; Node copytail; Node cursor; Node[ ] answer = new Node[2]; copyhead = new Node(start.data, null); copytail = copyhead; cursor = start; // continued on next slide linklist2 34

35 listpart continued while (cursor!= end) { cursor = cursor.link; if (cursor == null) throw new IllegalArgumentException ("end node was not found on the list"); copytail.addnodeafter(cursor.data); copytail = copytail.link; answer[0] = copyhead; answer[1] = copytail; return answer; linklist2 35

36 Bag ADT using linked list Invariant: Items are stored in a linked list of Nodes; member variable head refers to the beginning of the list Member variable manynodes stores the current size of the Bag (in # of nodes) linklist2 36

37 List-based Bag vs. Array-based Bag In the list-based version of the Bag, most of the same methods are defined, but with different implementations An exception is the ensurecapacity method; since a linked list can grow and shrink easily (without the need to make a temporary copy of a data array) For this implementation, a new method is added for the heck of it: the grab() method returns a random value from the Bag s contents linklist2 37

38 Bag member methods Default constructor: creates empty bag Code: public Bag ( ) { head=null; manynodes=0; linklist2 38

39 Clone() method Like the array-based bag, the linked list version implements the Cloneable interface, and thus must provide a clone() method Code shown on next slide linklist2 39

40 Clone method public Object clone( ) { Bag answer; try { answer = (Bag) super.clone( ); catch (CloneNotSupportedException e) { throw new RuntimeException ("This class does not implement Cloneable"); answer.head = Node.listCopy(head); return answer; linklist2 40

41 Remove method Strategy is similar to removal of target value from an array With array, we copied the last index s data into the slot occupied by the target value, then decremented used With linked list, we ll copy the head Node s data value into the target Node, then remove the head Node linklist2 41

42 Code for remove method public boolean remove(int target) { Node targetnode; targetnode = Node.listSearch(head, target); if (targetnode == null) return false; else { targetnode.setdata(head.getdata( )); head = head.getlink( ); manynodes--; return true; linklist2 42

43 countoccurrences method Strategy: create local variable (cursor) that refers to a Node use listsearch to find the target value, and assign its return value to cursor If cursor isn t null, count one occurrence Continue process until cursor becomes null linklist2 43

44 Code for countoccurrences public int countoccurrences(int target) { int answer = 0; Node cursor; cursor = Node.listSearch(head, target); while (cursor!= null) { answer++; cursor = cursor.getlink( ); cursor = Node.listSearch(cursor, target); return answer; linklist2 44

45 Add methods Since Bag is unordered ADT, follow path of least resistance and insert all items at front of list We follow this procedure for add(), addmany(), and addall() (next several slides) linklist2 45

46 add method public void add(int element) { head = new Node(element, head); manynodes++; linklist2 46

47 addmany method public void addmany(int... elements) { for (int i : elements) add(i); linklist2 47

48 addall method public void addall(bag addend) { Node[ ] copyinfo; if (addend.manynodes > 0) { copyinfo = Node.listCopyWithTail(addend.head); copyinfo[1].setlink(head); head = copyinfo[0]; manynodes += addend.manynodes; linklist2 48

49 The union method Creates a new Bag that is the union of two other bags Method is static so that it can be applied to any two Bag objects (and has no effect on either one) linklist2 49

50 Code for union public static Bag union(bag b1, Bag b2) { Bag answer = new Bag( ); answer.addall(b1); answer.addall(b2); return answer; linklist2 50

51 But wait, there s more! Doubly-linked lists Singly-linked lists have one major limitation: you can only traverse the list in one direction A variation on the linked list: linking each node to its previous neighbor as well as its next neighbor makes bi-directional list traversal possible linklist2 51

52 Modified class definition for doublylinked list public class Node { private int data; private Node link; // link to next Node private Node back; // link to previous Node linklist2 52

53 Methods that must be modified constructor addnodeafter remove linklist2 53

54 Constructors for doubly-linked list public Node (int d, Node b, Node n) { data = d; back = b; link = n; public Node ( ) { this (0, null, null); linklist2 54

55 addnodeafter method Strategy is similar to singly-linked addnodeafter, but with the additional complication that the node has two links Important thing to remember: make links before you break them! linklist2 55

56 Code for add method public void addnodeafter (Node previous, int entry) { Node n = new Node(entry, previous, null); n.link = previous.getlink(); if (previous.link!= null) previous.link.back = n; previous.link = n; linklist2 56

Linked Lists. It s a conspiracy!

Linked Lists. It s a conspiracy! Linked Lists It s a conspiracy! 1 Linked list: a data structure used to represent an ordered list Consists of a sequence of nodes A node consists of a data item and a reference to the next node -- the

More information

Linked Lists. What Is A Linked List? Example Declarations. An Alternative Collections Data Structure. Head

Linked Lists. What Is A Linked List? Example Declarations. An Alternative Collections Data Structure. Head Linked Lists An Alternative Collections Data Structure What Is A Linked List? A data structure using memory that expands and shrinks as needed Relies on identical nodes pointing or linked to other nodes

More information

Classes, interfaces, & documentation. Review of basic building blocks

Classes, interfaces, & documentation. Review of basic building blocks Classes, interfaces, & documentation Review of basic building blocks Objects Data structures literally, storage containers for data constitute object knowledge or state Operations an object can perform

More information

CSC212 Data Structure - Section FG

CSC212 Data Structure - Section FG CSC212 Data Structure - Section FG Lecture 10 The Bag and Sequence Classes with Linked Lists Instructor: Feng HU Department of Computer Science City College of New York @ Feng HU, 2016 1 Reviews: Node

More information

Lecture 9 Linked Lists

Lecture 9 Linked Lists CSC212 Data Structure - Section FG Lecture 9 Linked Lists Instructor: Feng HU Department of Computer Science City College of New York Motivation In a sequence using an array, inserting a new item needs

More information

CS 151. Linked Lists, Recursively Implemented. Wednesday, October 3, 12

CS 151. Linked Lists, Recursively Implemented. Wednesday, October 3, 12 CS 151 Linked Lists, Recursively Implemented 1 2 Linked Lists, Revisited Recall that a linked list is a structure that represents a sequence of elements that are stored non-contiguously in memory. We can

More information

Implementing a List in Java. CSC 143 Java. List Interface (review) Just an Illusion? Using an Array to Implement a List CSC

Implementing a List in Java. CSC 143 Java. List Interface (review) Just an Illusion? Using an Array to Implement a List CSC Implementing a List in Java CSC 143 Java List Implementation Using Arrays Updated with Java 5.0 Generics Reading: Ch. 13 Two implementation approaches are most commonly used for simple lists: Arrays Linked

More information

Linked Lists

Linked Lists Linked Lists 2-17-2005 Opening Discussion What did we talk about last class? Do you have any code to show? Do you have any questions about the assignment? Can you tell me what a linked list is and what

More information

Linked Lists. Linked List Nodes. Walls and Mirrors Chapter 5 10/25/12. A linked list is a collection of Nodes: item next -3.

Linked Lists. Linked List Nodes. Walls and Mirrors Chapter 5 10/25/12. A linked list is a collection of Nodes: item next -3. Linked Lists Walls and Mirrors Chapter 5 Linked List Nodes public class Node { private int item; private Node next; public Node(int item) { this(item,null); public Node(int item, Node next) { setitem(item);

More information

Binghamton University. CS-140 Fall Problem Solving. Creating a class from scratch

Binghamton University. CS-140 Fall Problem Solving. Creating a class from scratch Problem Solving Creating a class from scratch 1 Recipe for Writing a Class 1. Write the class boilerplate stuff 2. Declare Fields 3. Write Creator(s) 4. Write accessor methods 5. Write mutator methods

More information

Dynamic Data Structures

Dynamic Data Structures Dynamic Data Structures We have seen that the STL containers vector, deque, list, set and map can grow and shrink dynamically. We now examine how some of these containers can be implemented in C++. To

More information

Linked lists. Insert Delete Lookup Doubly-linked lists. Lecture 6: Linked Lists

Linked lists. Insert Delete Lookup Doubly-linked lists. Lecture 6: Linked Lists Linked lists Insert Delete Lookup Doubly-linked lists Lecture 6: Linked Lists Object References When you declare a variable of a non-primitive type you are really declaring a reference to that object String

More information

Implementing a List in Java. CSE 143 Java. Just an Illusion? List Interface (review) Using an Array to Implement a List.

Implementing a List in Java. CSE 143 Java. Just an Illusion? List Interface (review) Using an Array to Implement a List. Implementing a List in Java CSE 143 Java List Implementation Using Arrays Reading: Ch. 13 Two implementation approaches are most commonly used for simple lists: Arrays Linked list Java Interface List concrete

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 07: Linked Lists MOUNA KACEM mouna@cs.wisc.edu Spring 2019 Linked Lists 2 Introduction Linked List Abstract Data Type SinglyLinkedList ArrayList Keep in Mind Introduction:

More information

Copyright 2007 Pearson Addison-Wesley Copyright 2019 Aiman Hanna All rights reserved

Copyright 2007 Pearson Addison-Wesley Copyright 2019 Aiman Hanna All rights reserved Comp 249 Programming Methodology Chapter 15 Linked Data Structure Part A Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University, Montreal, Canada These slides has been

More information

Object Oriented Programming. What is this Object? Using the Object s Slots

Object Oriented Programming. What is this Object? Using the Object s Slots 1 Object Oriented Programming Chapter 2 introduces Object Oriented Programming. OOP is a relatively new approach to programming which supports the creation of new data types and operations to manipulate

More information

Linked Lists. College of Computing & Information Technology King Abdulaziz University. CPCS-204 Data Structures I

Linked Lists. College of Computing & Information Technology King Abdulaziz University. CPCS-204 Data Structures I College of Computing & Information Technology King Abdulaziz University CPCS-204 Data Structures I What are they? Abstraction of a list: i.e. a sequence of nodes in which each node is linked to the node

More information

[2:3] Linked Lists, Stacks, Queues

[2:3] Linked Lists, Stacks, Queues [2:3] Linked Lists, Stacks, Queues Helpful Knowledge CS308 Abstract data structures vs concrete data types CS250 Memory management (stack) Pointers CS230 Modular Arithmetic !!!!! There s a lot of slides,

More information

Implementing a List in Java. CSE 143 Java. List Interface (review) Just an Illusion? Using an Array to Implement a List.

Implementing a List in Java. CSE 143 Java. List Interface (review) Just an Illusion? Using an Array to Implement a List. Implementing a List in Java CSE 143 Java List Implementation Using Arrays Reading: Ch. 22 Two implementation approaches are most commonly used for simple lists: Arrays Linked list Java Interface List concrete

More information

+ Abstract Data Types

+ Abstract Data Types Linked Lists Abstract Data Types An Abstract Data Type (ADT) is: a set of values a set of operations Sounds familiar, right? I gave a similar definition for a data structure. Abstract Data Types Abstract

More information

Stacks. The unorganized person s data structure. stacks 1

Stacks. The unorganized person s data structure. stacks 1 Stacks The unorganized person s data structure stacks 1 Stack characteristics Entries are ordered in terms of access -- both insertion and removal take place at same spot (top of stack) Specialized type

More information

CMSC 341 Lecture 7 Lists

CMSC 341 Lecture 7 Lists CMSC 341 Lecture 7 Lists Today s Topics Linked Lists vs Arrays Nodes Using Linked Lists Supporting Actors (member variables) Overview Creation Traversal Deletion UMBC CMSC 341 Lists 2 Linked Lists vs Arrays

More information

LAB 5, THE HIDDEN DELIGHTS OF LINKED LISTS

LAB 5, THE HIDDEN DELIGHTS OF LINKED LISTS LAB 5, THE HIDDEN DELIGHTS OF LINKED LISTS Questions are based on the Main and Savitch review questions for chapter 5 in the Exam Preparation section of the webct course page. In case you haven t observed

More information

Graphs. The ultimate data structure. graphs 1

Graphs. The ultimate data structure. graphs 1 Graphs The ultimate data structure graphs 1 Definition of graph Non-linear data structure consisting of nodes & links between them (like trees in this sense) Unlike trees, graph nodes may be completely

More information

Data Structures. Alice E. Fischer. Lecture 4, Fall Alice E. Fischer Data Structures L4... 1/19 Lecture 4, Fall / 19

Data Structures. Alice E. Fischer. Lecture 4, Fall Alice E. Fischer Data Structures L4... 1/19 Lecture 4, Fall / 19 Data Structures Alice E. Fischer Lecture 4, Fall 2018 Alice E. Fischer Data Structures L4... 1/19 Lecture 4, Fall 2018 1 / 19 Outline 1 Ordered Lists 2 Sorted Lists Tail Pointers 3 Doubly Linked Lists

More information

CE204 Data Structures and Algorithms Part 1

CE204 Data Structures and Algorithms Part 1 CE204 Data Structures and Algorithms Part 1 11/01/2018 CE204 Part 1 1 Recommended Reading The most useful book for much of the material in this module is Data Structures and Algorithm Analysis in Java

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

Dynamic Data Structures

Dynamic Data Structures Chapter 10 Dynamic Data Structures Vectors Linked Data Structures Chapter 10 Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Overview This chapter is about data structures that

More information

Stacks (5.1) Abstract Data Types (ADTs) CSE 2011 Winter 2011

Stacks (5.1) Abstract Data Types (ADTs) CSE 2011 Winter 2011 Stacks (5.1) CSE 2011 Winter 2011 26 January 2011 1 Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data structure An ADT specifies: Data stored Operations on the data Error

More information

Lecture 5: Implementing Lists, Version 1

Lecture 5: Implementing Lists, Version 1 CS18 Integrated Introduction to Computer Science Fisler, Nelson Lecture 5: Implementing Lists, Version 1 Contents 1 Implementing Lists 1 2 Methods 2 2.1 isempty...........................................

More information

CpSc212 Goddard Notes Chapter 10. Linked Lists

CpSc212 Goddard Notes Chapter 10. Linked Lists CpSc212 Goddard Notes Chapter 10 Linked Lists 10.1 Links and Pointers The linked list is not an ADT in its own right; rather it is a way of implementing many data structures. It is designed to replace

More information

Chapter 17: Linked Lists

Chapter 17: Linked Lists Chapter 17: Linked Lists 17.1 Introduction to the Linked List ADT Introduction to the Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures list head

More information

Dynamic Data Structures and Generics

Dynamic Data Structures and Generics Dynamic Data Structures and Generics Reading: Savitch ch. 12 Objectives Introduce Abstract Data Types (ADTs) and review interfaces Introduce Java's ArrayList class Learn about linked lists and inner classes

More information

Elementary Data Structures: Part 1: Arrays, Lists. CSE 2320 Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington

Elementary Data Structures: Part 1: Arrays, Lists. CSE 2320 Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington Elementary Data Structures: Part 1: Arrays, Lists CSE 2320 Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington 1 Basic Types Types like integers, real numbers, characters.

More information

CMPSCI 187: Programming With Data Structures. Lecture #16: Thinking About Recursion David Mix Barrington 12 October 2012

CMPSCI 187: Programming With Data Structures. Lecture #16: Thinking About Recursion David Mix Barrington 12 October 2012 CMPSCI 187: Programming With Data Structures Lecture #16: Thinking About Recursion David Mix Barrington 12 October 2012 Thinking About Recursion Review of the Grid Class Recursion on Linked Structures

More information

Fun facts about recursion

Fun facts about recursion Outline examples of recursion principles of recursion review: recursive linked list methods binary search more examples of recursion problem solving using recursion 1 Fun facts about recursion every loop

More information

ADTs, Arrays, Linked Lists

ADTs, Arrays, Linked Lists 1 ADTs, Arrays, Linked Lists Outline and Required Reading: ADTs ( 2.1) Using Arrays ( 3.1) Linked Lists ( 3.2, 3.3, 3.4) CSE 2011, Winter 2017 Instructor: N. Vlajic Data Type 2 A data type is a classification

More information

Linked List. ape hen dog cat fox. tail. head. count 5

Linked List. ape hen dog cat fox. tail. head. count 5 Linked Lists Linked List L tail head count 5 ape hen dog cat fox Collection of nodes with a linear ordering Has pointers to the beginning and end nodes Each node points to the next node Final node points

More information

Chapter 17: Linked Lists

Chapter 17: Linked Lists Chapter 17: Linked Lists Copyright 2009 Pearson Education, Inc. Copyright Publishing as Pearson 2009 Pearson Addison-Wesley Education, Inc. Publishing as Pearson Addison-Wesley 17.1 Introduction to the

More information

Queues. Data structures that wait their turn. queues 1

Queues. Data structures that wait their turn. queues 1 Queues Data structures that wait their turn queues 1 Queue characteristics FIFO: first in, first out insertion of items occurs at one end, removal occurs at the other end first item inserted is the first

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 07: Linked Lists and Iterators MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Linked Lists 2 Introduction Linked List Abstract Data Type General Implementation of the ListADT

More information

Topic 11 Linked Lists

Topic 11 Linked Lists Topic 11 "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

More information

Discussion 2C Notes (Week 3, January 21) TA: Brian Choi Section Webpage:

Discussion 2C Notes (Week 3, January 21) TA: Brian Choi Section Webpage: Discussion 2C Notes (Week 3, January 21) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Abstraction In Homework 1, you were asked to build a class called Bag. Let

More information

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014 Lesson 10A OOP Fundamentals By John B. Owen All rights reserved 2011, revised 2014 Table of Contents Objectives Definition Pointers vs containers Object vs primitives Constructors Methods Object class

More information

List ADT. Announcements. The List interface. Implementing the List ADT

List ADT. Announcements. The List interface. Implementing the List ADT Announcements Tutoring schedule revised Today s topic: ArrayList implementation Reading: Section 7.2 Break around 11:45am List ADT A list is defined as a finite ordered sequence of data items known as

More information

All the above operations should be preferably implemented in O(1) time. End of the Queue. Front of the Queue. End Enqueue

All the above operations should be preferably implemented in O(1) time. End of the Queue. Front of the Queue. End Enqueue Module 4: Queue ADT Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Queue ADT Features (Logical View) A List that

More information

C++ - Lesson 2 This is a function prototype. a' is a function that takes an integer array argument and returns an integer pointer.

C++ - Lesson 2 This is a function prototype. a' is a function that takes an integer array argument and returns an integer pointer. C++ - Lesson 2 1. Explain the following declarations: a) int *a(int a[]); This is a function prototype. 'a' is a function that takes an integer array argument and returns an integer pointer. b) const char

More information

Announcements. Prelude (2) Prelude (1) Data Structures and Information Systems Part 1: Data Structures. Lecture 6: Lists.

Announcements. Prelude (2) Prelude (1) Data Structures and Information Systems Part 1: Data Structures. Lecture 6: Lists. Announcements MODULE WEB-SITE: http://www.csc.liv.ac.uk/ michele/teaching/comp102/comp102.html FIRST ASSIGNMENT DEADLINE: Wednesday, February 1st, 14.30, LAB 7 Boxes (late submissions to be left in the

More information

List ADT. B/W Confirming Pages

List ADT. B/W Confirming Pages wu3399_ch8.qxd //7 :37 Page 98 8 List ADT O b j e c t i v e s After you have read and studied this chapter, you should be able to Describe the key features of the List ADT. the List ADT using an array

More information

Linked Data Structures

Linked Data Structures 15.1 Java Linked Lists 806 Example: A Simple Linked List Class 806 Working with Linked Lists 810 Node Inner Classes 816 Example: A Generic Linked List 819 The equals Method for Linked Lists 825 15.2 Copy

More information

CE204 Data Structures and Algorithms Part 2

CE204 Data Structures and Algorithms Part 2 CE204 Data Structures and Algorithms Part 2 14/01/2018 CE204 Part 2 1 Abstract Data Types 1 An abstract data type is a type that may be specified completely without the use of any programming language.

More information

Dynamic Data Structures and Generics

Dynamic Data Structures and Generics Dynamic Data Structures and Generics Chapter 10 Chapter 10 1 Introduction A data structure is a construct used to organize data in a specific way. An array is a static data structure. Dynamic data structures

More information

Introduction. Reference

Introduction. Reference Introduction Data Structures - Linked Lists 01 Dr TGI Fernando 1 2 Problems with arrays Unordered array - searching is slow, deletion is slow Ordered array - insertion is slow, deletion is slow Arrays

More information

Graphs. The ultimate data structure. graphs 1

Graphs. The ultimate data structure. graphs 1 Graphs The ultimate data structure graphs 1 Definition of graph Non-linear data structure consisting of nodes & links between them (like trees in this sense) Unlike trees, graph nodes may be completely

More information

Introduction to Linked Data Structures

Introduction to Linked Data Structures Introduction to Linked Data Structures A linked data structure consists of capsules of data known as nodes that are connected via links Links can be viewed as arrows and thought of as one way passages

More information

Subclassing for ADTs Implementation

Subclassing for ADTs Implementation Object-Oriented Design Lecture 8 CS 3500 Fall 2009 (Pucella) Tuesday, Oct 6, 2009 Subclassing for ADTs Implementation An interesting use of subclassing is to implement some forms of ADTs more cleanly,

More information

Implementation. Learn how to implement the List interface Understand the efficiency trade-offs between the ArrayList and LinkedList implementations

Implementation. Learn how to implement the List interface Understand the efficiency trade-offs between the ArrayList and LinkedList implementations Readings List Implementations Chapter 20.2 Objectives Learn how to implement the List interface Understand the efficiency trade-offs between the ArrayList and LinkedList implementations Additional references:

More information

Representation Invariants and Abstraction Functions

Representation Invariants and Abstraction Functions Representation Invariants and Abstraction Functions Outline Reasoning about ADTs Representation invariants (rep invariants) Representation exposure Checking rep invariants Abstraction functions CSCI 2600

More information

CS32 - Week 2. Umut Oztok. July 1, Umut Oztok CS32 - Week 2

CS32 - Week 2. Umut Oztok. July 1, Umut Oztok CS32 - Week 2 CS32 - Week 2 Umut Oztok July 1, 2016 Arrays A basic data structure (commonly used). Organize data in a sequential way. Arrays A basic data structure (commonly used). Organize data in a sequential way.

More information

Advanced Java Concepts Unit 2: Linked Lists.

Advanced Java Concepts Unit 2: Linked Lists. Advanced Java Concepts Unit 2: Linked Lists. The List interface defines the structure of a linear collection. Here are some of its methods. boolean add( E element ) Appends the element to the end of the

More information

Implementing a Queue with a Linked List

Implementing a Queue with a Linked List CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 192] Implementing a Queue with a Linked List State representation: æ Data items are kept in a linked list. æ Pointer head points to

More information

Data structure is an organization of information, usually in memory, for better algorithm efficiency.

Data structure is an organization of information, usually in memory, for better algorithm efficiency. Lecture 01 Introduction Wednesday, 29 July 2015 12:59 pm Data structure is an organization of information, usually in memory, for better algorithm efficiency. Abstract data types (ADTs) are a model for

More information

ECM1406. Answer Sheet Lists

ECM1406. Answer Sheet Lists ECM1406 Answer Sheet Lists These questions are based on those found in Chapters 3 and 4 of the core text Data Structures Using Java by Malik and Nair. The source code for the ArrayListClass, UnorderedArrayList,

More information

Objects and Iterators

Objects and Iterators Objects and Iterators Can We Have Data Structures With Generic Types? What s in a Bag? All our implementations of collections so far allowed for one data type for the entire collection To accommodate a

More information

Java Review: Objects

Java Review: Objects Outline Java review Abstract Data Types (ADTs) Interfaces Class Hierarchy, Abstract Classes, Inheritance Invariants Lists ArrayList LinkedList runtime analysis Iterators Java references 1 Exam Preparation

More information

Lists. CITS2200 Data Structures and Algorithms. Topic 9

Lists. CITS2200 Data Structures and Algorithms. Topic 9 CITS2200 Data Structures and Algorithms Topic 9 Lists Why lists? List windows Specification Block representation Singly linked representation Performance comparisons Reading: Lambert and Osborne, Sections

More information

Linked Lists and other Dynamic Data Structures

Linked Lists and other Dynamic Data Structures Linked Lists and other Dynamic Data Structures Arrays Fixed in size Allocated in advance within a contiguous memory block Look-up is fast Resizing and Deleting is hard (reallocate and copy) Dynamic Data

More information

CSE 331 Midterm Exam Sample Solution 2/13/12

CSE 331 Midterm Exam Sample Solution 2/13/12 Question 1. (14 points) (assertions) Using backwards reasoning, find the weakest precondition for each sequence of statements and postcondition below. Insert appropriate assertions in each blank line.

More information

ITI Introduction to Computing II

ITI Introduction to Computing II index.pdf March 17, 2013 1 ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Version of March 17, 2013 Definitions A List is a linear abstract

More information

CS18000: Programming I

CS18000: Programming I CS18000: Programming I Data Abstraction January 25, 2010 Prof. Chris Clifton Announcements Book is available (Draft 2.0) Syllabus updated with readings corresponding to new edition Lab consulting hours

More information

Review: List Implementations. CSE 143 Java. Links. A Different Strategy: Lists via Links. Linked Links. CSE143 Au List

Review: List Implementations. CSE 143 Java. Links. A Different Strategy: Lists via Links. Linked Links. CSE143 Au List Review: Implementations CSE 143 Java ed s Reading: Ch. 23 The external interface is already defined Implementation goal: implement methods efficiently Array approach: use an array with extra space internally

More information

Trees 2: Linked Representation, Tree Traversal, and Binary Search Trees

Trees 2: Linked Representation, Tree Traversal, and Binary Search Trees Trees 2: Linked Representation, Tree Traversal, and Binary Search Trees Linked representation of binary tree Again, as with linked list, entire tree can be represented with a single pointer -- in this

More information

Data Structures and Algorithms

Data Structures and Algorithms Data Structures and Algorithms CS245-2015S-05 Abstract Data Types and Lists David Galles Department of Computer Science University of San Francisco 05-0: Abstract Data Types Recall that an Abstract Data

More information

Another solution: B-trees

Another solution: B-trees Trees III: B-trees The balance problem Binary search trees provide efficient search mechanism only if they re balanced Balance depends on the order in which nodes are added to a tree We have seen red-black

More information

Assignment of Objects

Assignment of Objects Copying Objects 1 Assignment of Objects 2 Slides 1. Table of Contents 2. Assignment of Objects 3. Dynamic Content 4. Shallow Copying 5. Deep Copying 6. this Pointer 7. Improved Deep Copy 8. Passing an

More information

About this exam review

About this exam review Final Exam Review About this exam review I ve prepared an outline of the material covered in class May not be totally complete! Exam may ask about things that were covered in class but not in this review

More information

Prelim 1 Solutions. CS 2110, March 10, 2015, 5:30 PM Total Question True False. Loop Invariants Max Score Grader

Prelim 1 Solutions. CS 2110, March 10, 2015, 5:30 PM Total Question True False. Loop Invariants Max Score Grader Prelim 1 Solutions CS 2110, March 10, 2015, 5:30 PM 1 2 3 4 5 Total Question True False Short Answer Recursion Object Oriented Loop Invariants Max 20 15 20 25 20 100 Score Grader The exam is closed book

More information

CSCI E-119 Section Notes. Section 5 Solutions

CSCI E-119 Section Notes. Section 5 Solutions CSCI E-119 Section Notes Section 5 Solutions Tracing through StringNode.print() Let s take a look at the execution of the StringNode.print(InputStr) method where the input list looks like this (the hexadecimal

More information

CS32 Discussion Sec.on 1B Week 2. TA: Zhou Ren

CS32 Discussion Sec.on 1B Week 2. TA: Zhou Ren CS32 Discussion Sec.on 1B Week 2 TA: Zhou Ren Agenda Copy Constructor Assignment Operator Overloading Linked Lists Copy Constructors - Motivation class School { public: }; School(const string &name); string

More information

CS159. Nathan Sprague

CS159. Nathan Sprague CS159 Nathan Sprague What s wrong with the following code? 1 /* ************************************************** 2 * Return the mean, or -1 if the array has length 0. 3 ***************************************************

More information

Linked Lists. Chapter 4

Linked Lists. Chapter 4 Linked Lists Chapter 4 1 Linked List : Definition Linked List: A collection of data items of the same type that are stored in separate objects referred to as "nodes". Each node contains, in addition to

More information

Homework 2: Imperative Due: 5:00 PM, Feb 15, 2019

Homework 2: Imperative Due: 5:00 PM, Feb 15, 2019 CS18 Integrated Introduction to Computer Science Fisler Homework 2: Imperative Due: 5:00 PM, Feb 15, 2019 Contents 1 Overview of Generic/Parameterized Types 2 2 Double the Fun with Doubly-Linked Lists

More information

PAIRS AND LISTS 6. GEORGE WANG Department of Electrical Engineering and Computer Sciences University of California, Berkeley

PAIRS AND LISTS 6. GEORGE WANG Department of Electrical Engineering and Computer Sciences University of California, Berkeley PAIRS AND LISTS 6 GEORGE WANG gswang.cs61a@gmail.com Department of Electrical Engineering and Computer Sciences University of California, Berkeley June 29, 2010 1 Pairs 1.1 Overview To represent data types

More information

Arrays. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

Arrays. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html 1 Arrays Arrays in Java an array is a container object that holds a fixed number of values of a single type the length of an array is established when the array is created 2 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

More information

CS S-05 Abstract Data Types and Lists 1

CS S-05 Abstract Data Types and Lists 1 CS245-2016S-05 Abstract Data Types and Lists 1 05-0: Abstract Data Types Recall that an Abstract Data Type is a definition of a type based on the operations that can be performed on it. An ADT is an interface

More information

LINKED LISTS cs2420 Introduction to Algorithms and Data Structures Spring 2015

LINKED LISTS cs2420 Introduction to Algorithms and Data Structures Spring 2015 LINKED LISTS cs2420 Introduction to Algorithms and Data Structures Spring 2015 1 administrivia 2 -assignment 5 due tonight at midnight -assignment 6 is out -YOU WILL BE SWITCHING PARTNERS! 3 assignment

More information

Chapter 6 Introduction to Defining Classes

Chapter 6 Introduction to Defining Classes Introduction to Defining Classes Fundamentals of Java: AP Computer Science Essentials, 4th Edition 1 Objectives Design and implement a simple class from user requirements. Organize a program in terms of

More information

MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR

MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR STUDENT IDENTIFICATION NO MULTIMEDIA COLLEGE JALAN GURNEY KIRI 54100 KUALA LUMPUR FIFTH SEMESTER FINAL EXAMINATION, 2014/2015 SESSION PSD2023 ALGORITHM & DATA STRUCTURE DSEW-E-F-2/13 25 MAY 2015 9.00 AM

More information

Another solution: B-trees

Another solution: B-trees Trees III: B-trees The balance problem Binary search trees provide efficient search mechanism only if they re balanced Balance depends on the order in which nodes are added to a tree We have seen red-black

More information

CSCI 200 Lab 3 Using and implementing sets

CSCI 200 Lab 3 Using and implementing sets CSCI 200 Lab 3 Using and implementing sets In this lab, you will write a program that manages a set of workers, using the Worker hierarchy you developed in Lab 2. You will also implement your own version

More information

Lists. ordered lists unordered lists indexed lists 9-3

Lists. ordered lists unordered lists indexed lists 9-3 The List ADT Objectives Examine list processing and various ordering techniques Define a list abstract data type Examine various list implementations Compare list implementations 9-2 Lists A list is a

More information

Classes Classes 2 / 36

Classes Classes 2 / 36 Classes 1 / 36 Classes Classes 2 / 36 Anatomy of a Class By the end of next lecture, you ll understand everything in this class definition. package edu. gatech. cs1331. card ; import java. util. Arrays

More information

Data abstractions: ADTs Invariants, Abstraction function. Lecture 4: OOP, autumn 2003

Data abstractions: ADTs Invariants, Abstraction function. Lecture 4: OOP, autumn 2003 Data abstractions: ADTs Invariants, Abstraction function Lecture 4: OOP, autumn 2003 Limits of procedural abstractions Isolate implementation from specification Dependency on the types of parameters representation

More information

Queues. CITS2200 Data Structures and Algorithms. Topic 5

Queues. CITS2200 Data Structures and Algorithms. Topic 5 CITS2200 Data Structures and Algorithms Topic 5 Queues Implementations of the Queue ADT Queue specification Queue interface Block (array) representations of queues Recursive (linked) representations of

More information

Abstract Data Types and Data Structures

Abstract Data Types and Data Structures Unit 6, Part 1 Abstract Data Types and Data Structures Computer Science S-111 Harvard University David G. Sullivan, Ph.D. Congrats on completing the first half! In the second half, we will study fundamental

More information

CSE 12 Abstract Syntax Trees

CSE 12 Abstract Syntax Trees CSE 12 Abstract Syntax Trees Compilers and Interpreters Parse Trees and Abstract Syntax Trees (AST's) Creating and Evaluating AST's The Table ADT and Symbol Tables 16 Using Algorithms and Data Structures

More information

Linked List Nodes (reminder)

Linked List Nodes (reminder) Outline linked lists reminders: nodes, implementation, invariants circular linked list doubly-linked lists iterators the Java foreach statement iterator implementation the ListIterator interface Linked

More information

CSE 331 Midterm Exam 2/13/12

CSE 331 Midterm Exam 2/13/12 Name There are 10 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed book, closed notes, closed

More information

Linked Lists. private int num; // payload for the node private Node next; // pointer to the next node in the list }

Linked Lists. private int num; // payload for the node private Node next; // pointer to the next node in the list } Linked Lists Since a variable referencing an object just holds the address of the object in memory, we can link multiple objects together to form dynamic lists or other structures. In our case we will

More information

Top of the Stack. Stack ADT

Top of the Stack. Stack ADT Module 3: Stack ADT Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Stack ADT Features (Logical View) A List that

More information