Recall: stacks and queues

Slides:



Advertisements
Similar presentations
Building Java Programs Chapter 16 Linked Lists. 2 A swap method? Does the following swap method work? Why or why not? public static void main(String[]
Advertisements

1 Data Structures  We can now explore some advanced techniques for organizing and managing information  Chapter 12 of the book focuses on: dynamic structures.
Data structures Abstract data types Java classes for Data structures and ADTs.
Lists, Stacks and Queues in C Yang Zhengwei CSCI2100B Data Structures Tutorial 4.
COP INTERMEDIATE JAVA Data Structures. A data structure is a way of organizing a collection of data so that it can be manipulated effectively. A.
Stacks and Queues. 2 3 Runtime Efficiency efficiency: measure of computing resources used by code. can be relative to speed (time), memory (space), etc.
CSE 143 Lecture 10 Linked List Basics reading: slides created by Marty Stepp
Arrays and Collections Tonga Institute of Higher Education.
1 Chapter 17 – Data Structures Outline Introduction Self-Referential Classes Dynamic Memory Allocation Linked Lists Stacks Queues Trees.
Stack Implementations Chapter 6 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
slides adapted from Marty Stepp and Hélène Martin
Lecture 16 Stacks and Queues Richard Gesick. Sample test questions 1.Write a definition for a Node class that holds a number. 2.Write a method that sums.
Stack: a Linked Implementation
Building Java Programs Chapter 16
G.PULLAIAH COLLEGE OF ENGINEERING AND TECHNOLOGY
Data Structure By Amee Trivedi.
Chapter 12 – Data Structures
Building Java Programs
Chapter 12: Data Structures
Cinda Heeren / Geoffrey Tien
slides created by Marty Stepp
Wednesday Questions How do I debug? We love to teach this at IPL/OH!
Stack Lesson xx   This module shows you the basic elements of a type of linked list called a stack.
Road Map CS Concepts Data Structures Java Language Java Collections
Linked node problem 3 What set of statements turns this picture:
Pointers and Linked Lists
Linked node problem 3 What set of statements turns this picture:
CSE 143 Lecture 9 References and Linked Nodes reading: 3.3; 16.1
Stacks, Queues, and Deques
Building Java Programs
structures and their relationships." - Linus Torvalds
Lecture 21 Stacks and Queues Richard Gesick.
CSE 143 Lecture 9 References and Linked Nodes reading: 16.1
Stacks, Queues, and Deques
CSE 143 Lecture 5 More Stacks and Queues; Complexity (Big-Oh)
slides created by Marty Stepp and Ethan Apter
Building Java Programs
Building Java Programs
CSE 143 Lecture 6 References and Linked Nodes reading: 16.1
ArrayLists.
Lecture 7: Linked List Basics reading: 16.2
CSE 214 – Computer Science II Stacks
Building Java Programs
CSE 143 Lecture 8 More Stacks and Queues; Complexity (Big-Oh)
slides adapted from Marty Stepp and Hélène Martin
slides created by Marty Stepp and Hélène Martin
Building Java Programs
Building Java Programs
Recall: stacks and queues
Building Java Programs
CSE 143 Lecture 5 References and Linked Nodes
CSE 143 Lecture 8 More Stacks and Queues; Complexity (Big-Oh)
Road Map CS Concepts Data Structures Java Language Java Collections
Lecture 16 Stacks and Queues CSE /26/2018.
Building Java Programs
slides created by Marty Stepp
slides adapted from Marty Stepp
Building Java Programs
Stacks, Queues, and Deques
Lecture 7: Linked List Basics reading: 16.2
Lecture 6: References and linked nodes reading: 16.1
CSE 143 Lecture 7 References and Linked Nodes reading: 16.1
Wednesday Questions How do I debug? We love to teach this at IPL/OH!
slides created by Marty Stepp
Linked Lists and Loops based on slides by Ethan Apter
Lecture 16 Stacks and Queues CSE /26/2018.
slides created by Marty Stepp
Lecture 6: References and linked nodes reading: 16.1
Stack Implementations
slides created by Marty Stepp and Hélène Martin
Presentation transcript:

Recall: stacks and queues stack: retrieves elements in reverse order as added queue: retrieves elements in same order as added push pop, peek top 3 2 bottom 1 front back 1 2 3 remove, peek add queue stack

Collection efficiency Complexity class of various operations on collections: Could we build lists differently to optimize other operations? Method ArrayList Stack Queue add (or push) O(1) add(index, value) - indexOf get remove set size Method ArrayList Stack Queue add (or push) O(1) add(index, value) O(N) - indexOf get remove set size

Memory for a List Array (contiguous in memory) Spread in memory 42 -3 17 9 42 9 -3 17

A list node class Each list node object stores: public class ListNode { int data; ListNode next; } Each list node object stores: one piece of integer data a reference to another list node ListNodes can be "linked" into chains to store a list of values: data next 42 data next -3 data next 17 data next 9 end

Linked node problem 1 What set of statements turns this picture: Into this? data next 10 data next 20 list data next 10 data next 20 data next 30 list

Reassigning references when you say: a.next = b.next; you are saying: "Make variable a.next refer to the same value as b.next." Or, "Make a.next point to the same place that b.next points." data next 10 data next 20 a data next 30 data next 40 b

Linked node problem 2 What set of statements turns this picture: Into this? data next 10 data next 20 list data next 30 data next 10 data next 20 list

Linked node problem 3 What set of statements turns this picture: Into this? data next 10 data next 20 list1 data next 30 data next 40 list2 data next 10 data next 20 data next 30 list1 data next 40 list2

Linked node problem 3 How many ListNode variables? Which variables change? 2 3 data next 10 data next 20 list1 1 5 6 data next 30 data next 40 list2 4 3 5 data next 10 data next 20 data next 30 list1 data next 40 list2 4

Linked node problem 3 How many ListNode variables? Which variables change? 2 3 data next 10 data next 20 list1 list1.next.next = list2 1 5 6 data next 30 data next 40 list2 4 3 5 data next 10 data next 20 data next 30 list1 data next 40 list2 4

Linked node problem 3 How many ListNode variables? Which variables change? 2 3 data next 10 data next 20 list1 list1.next.next = list2 1 list2 = list2.next 5 6 data next 30 data next 40 list2 4 3 5 data next 10 data next 20 data next 30 list1 data next 40 list2 4

Linked node problem 3 How many ListNode variables? Which variables change? 2 3 data next 10 data next 20 list1 list1.next.next = list2 1 list2 = list2.next list1.next.next.next = null 5 6 data next 30 data next 40 list2 4 3 5 data next 10 data next 20 data next 30 list1 data next 40 list2 4

References vs. objects variable = value; For the list at right: a variable (left side of = ) is an arrow (the base of an arrow) a value (right side of = ) is an object (a box; what an arrow points at) For the list at right: a.next = value; means to adjust where points variable = a.next; means to make variable point at 2 data next 10 data next 20 a 1 1 2

data next 10 data next 20 data next 30 list1 current

Linked List vs. Array Similar to array code: Print list values: int[] a = ...; int i = 0; while (i < a.length) { System.out.println(a[i]); i++; } Print list values: ListNode list= ...; ListNode current = list; while (current != null) { System.out.println(current.data); current = current.next; } Description Array Code Linked List Code Go to front of list int i = 0; ListNode current = list; Test for more elements i < size current != null Current value elementData[i] current.data Go to next element i++; current = current.next;

Linked node problem 4 What set of statements turns this picture: Into this? data next 10 data next 990 list ... data next 10 data next 990 data next 1000 list ...