Linked Lists. It s all connected
|
|
- Susanna Houston
- 5 years ago
- Views:
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! 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 informationLinked 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 informationClasses, 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 informationCSC212 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 informationLecture 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 informationCS 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 informationImplementing 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 informationLinked 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 informationLinked 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 informationBinghamton 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 informationDynamic 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 informationLinked 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 informationImplementing 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 informationProgramming 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 informationCopyright 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 informationObject 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 informationLinked 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 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 informationImplementing 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
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 informationStacks. 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 informationCMSC 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 informationLAB 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 informationGraphs. 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 informationData 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 informationCE204 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 informationChapter 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 informationDynamic 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 informationStacks (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 informationLecture 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 informationCpSc212 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 informationChapter 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 informationDynamic 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 informationElementary 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 informationCMPSCI 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 informationFun 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 informationADTs, 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 informationLinked 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 informationChapter 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 informationQueues. 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 informationProgramming 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 informationTopic 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 informationDiscussion 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 informationLesson 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 informationList 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 informationAll 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 informationC++ - 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 informationAnnouncements. 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 informationList 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 informationLinked 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 informationCE204 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 informationDynamic 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 informationIntroduction. 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 informationGraphs. 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 informationIntroduction 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 informationSubclassing 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 informationImplementation. 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 informationRepresentation 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 informationCS32 - 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 informationAdvanced 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 informationImplementing 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 informationData 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 informationECM1406. 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 informationObjects 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 informationJava 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 informationLists. 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 informationLinked 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 informationCSE 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 informationITI 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 informationCS18000: 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 informationReview: 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 informationTrees 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 informationData 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 informationAnother 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 informationAssignment 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 informationAbout 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 informationPrelim 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 informationCSCI 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 informationCS32 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 informationCS159. 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 informationLinked 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 informationHomework 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 informationPAIRS 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 informationArrays. 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 informationCS 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 informationLINKED 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 informationChapter 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 informationMULTIMEDIA 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 informationAnother 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 informationCSCI 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 informationLists. 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 informationClasses 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 informationData 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 informationQueues. 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 informationAbstract 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 informationCSE 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 informationLinked 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 informationCSE 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 informationLinked 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 informationTop 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