Singly Linked Lists Representation Space Analysis

Slides:



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

Singly Linked Lists What is a singly-linked list? Why linked lists?
Stacks, Queues, and Linked Lists
Section 2.5 Single-Linked Lists. A linked list is useful for inserting and removing at arbitrary locations The ArrayList is limited because its add and.
Data Structure Lecture-5
David Weinberg presents Linked Lists: The Background  Linked Lists are similar to ArrayLists in their appearance and method of manipulation  They do.
Ics202 Data Structures. hh tail head (b) LinkedList head tail Element datum next 3 Integer Element datum next 1 Integer Element datum next 4 Integer.
Data Structures: A Pseudocode Approach with C 1 Chapter 5 Contd... Objectives Explain the design, use, and operation of a linear list Implement a linear.
Lecture 8 CS203. Implementation of Data Structures 2 In the last couple of weeks, we have covered various data structures that are implemented in the.
Doubly Linked Lists Representation Space Analysis Creation and Insertion Traversal Deletion.
Doubly Linked Lists Doubly Linked Lists: Introduction. Doubly Linked Lists: Implementation Doubly Linked Lists: Analysis Doubly Linked Lists: Creation.
1 Chapter 24 Lists Stacks and Queues. 2 Objectives F To design list with interface and abstract class (§24.2). F To design and implement a dynamic list.
Lecture 4 Linked Lists King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science Department.
Singly Linked Lists Representation Space Analysis Creation and Insertion Traversal Search Deletion.
Singly Linked Lists Singly Linked Lists: Introduction. Singly Linked Lists: Implementation. Singly Linked Lists: Analysis. Singly Linked Lists: Creation.
Singly Linked Lists Representation Space Analysis Creation and Insertion Traversal Search Deletion.
Linked Lists CSC 172 SPRING 2004 LECTURE 6. ANNOUNCEMENTS Project 2 due Wed, Feb 18 th, 5PM, CSB Read Weiss Chapter 17 Department T shirts available $10.
Singly Linked Lists - Ed. 2, 3: Chapter 4 - Ed. 4.: Chapter 3.
Lecture 6: Linked Lists Linked lists Insert Delete Lookup Doubly-linked lists.
Singly Linked Lists Representation Space Analysis Creation and Insertion Traversal Search Deletion.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 26 Implementing Lists, Stacks,
Queues What is a Queue? Queue Implementations: Queue As Array
1/ 124 COP 3503 FALL 2012 SHAYAN JAVED LECTURE 18 Programming Fundamentals using Java 1.
CS 1031 Linked Lists Definition of Linked Lists Examples of Linked Lists Operations on Linked Lists Linked List as a Class Linked Lists as Implementations.
4-1 Topic 6 Linked Data Structures. 4-2 Objectives Describe linked structures Compare linked structures to array- based structures Explore the techniques.
12/18/2015ITK 2751 CollectionList A bstractSequentialList Vector Stack LinkedList {interface} AbstractList {abstract} ArrayList Java Provides a List interface.
Algorithms and Data Structures
Linked lists. Data structures to store a collection of items Data structures to store a collection of items are commonly used Typical operations on such.
Lists (2). Circular Doubly-Linked Lists with Sentry Node Head.
Arrays, Link Lists, and Recursion Chapter 3. Sorting Arrays: Insertion Sort Insertion Sort: Insertion sort is an elementary sorting algorithm that sorts.
CS212: Data Structures and Algorithms Lecture # 4 Linked List.
1 Data Structures and Algorithms Linked List. 2 Lists Lists The Linked List ADT Linked List The Linked List Class Definition Linked List Class implementation.
1 Chapter 24 Implementing Lists, Stacks, Queues, and Priority Queues Jung Soo (Sue) Lim Cal State LA.
Linked Data Structures
Section 2.6 Linked List StringLog ADT Implementation
Singly Linked Lists.
Linked List.
Recap: Solution of Last Lecture Activity
Doubly Linked List Review - We are writing this code
UNIT-3 LINKED LIST.
Activity Write the code fragment to reverse a singly linked list
Sequences 8/2/ :13 AM Linked Lists Linked Lists.
Sequences 8/2/ :16 AM Linked Lists Linked Lists.
Binary Search one reason that we care about sorting is that it is much faster to search a sorted list compared to sorting an unsorted list the classic.
Linked lists Motivation: we can make arrays, but their functionality is slightly limited and can be difficult to work with Biggest issue: size management.
Queues What is a queue? Queue Implementations: As Array
Linked List Sudeshna Sarkar.
Programmazione I a.a. 2017/2018.
8-1.
Prof. Neary Adapted from slides by Dr. Katherine Gibson
8-1.
MyList<T> It’s a generic type, <T> is a type parameter
Linked Lists.
Data Structures ADT List
Data Structures ADT List
Sequences 11/27/2018 1:37 AM Singly Linked Lists Singly Linked Lists.
Foundational Data Structures
Sequences 12/8/2018 3:02 AM Linked Lists Linked Lists.
Doubly Linked Lists Lecture 21 Tue, Mar 21, 2006.
Chapter 24 Implementing Lists, Stacks, Queues, and Priority Queues
Mutable Data (define mylist (list 1 2 3)) (bind ((new (list 4)))
LINKED LISTS.
Computer Science and Engineering
Data Structures ADT List
Linked Lists.
Activity Write the code fragment to reverse a singly linked list
Programming II (CS300) Chapter 07: Linked Lists
Linked Lists.
Doubly Linked Lists Representation Space Analysis
Chapter 9 Linked Lists.
Presentation transcript:

Singly Linked Lists Representation Space Analysis Creation and Insertion Traversal Search Deletion COSC 301: Data Structures

Representation We are using a representation in which a linked list has both head and tail references . public class MyLinkedList{ protected Element head; protected Element tail; public final class Element{ Object data; Element next; Element(Object obj, Element element){ data = obj; next = element; } public Object getData(){return data;} public Element getNext(){return next;} list head tail COSC 301: Data Structures

Representation: Space Analysis Now, we can take a look at the space requirements: S(n) = sizeof(MyLinkedList) + n sizeof(MyLinkedList.Element) = 2 sizeof(MyLinkedList.Element ref) + n [sizeof(Object ref) + sizeof(MyLinkedList.Element ref)] = (n + 2) sizeof(MyLinkedList.Element ref) + n sizeof(Object ref) Explanation Space Require The list reference has two fields: head (type: Element) and tail (type: Element) = 2 sizeof(MyLinkedList.Element ref) sizeof(MyLinkedList) The list has n elements of type Element. Each element has two fields-- data (type Object) and next (type Element). n sizeof(MyLinkedList.Element) COSC 301: Data Structures

List Creation and Insertion head An empty list is created as follows: Once created, elements can be inserted into the list using either the append or prepend methods Also if we have reference to a node (an element), we can use insertAfter or InsertBefore of the Element class. MyLinkedList list = new MyLinkedList(); tail for (int k = 0; k < 10; k++) list.append(new Integer(k)); COSC 301: Data Structures

Insertion at the end (Append) public void append(Object obj){ Element element = new Element(obj, null); if(head == null) head = element; else tail.next = element; tail = element; } Complexity is O(1) COSC 301: Data Structures

Insertion at the beginning (Prepend) public void prepend(Object obj) { Element element = new Element(obj, head); if(head == null) tail = element; head = element; } Complexity is O(1) COSC 301: Data Structures

Insertion before and after an element public void insertBefore(Object obj) { Element element = new Element(obj, this); if(this == head) { head = element; return; } Element previous = head; while (previous.next != this) { previous = previous.next; previous.next = element; Complexity is O(n) public void insertAfter(Object obj) { next = new Element(obj, next); if(this == tail) tail = next; } Complexity is O(1) COSC 301: Data Structures

Traversal To move a reference e from one node to the next: Example: Count the number of nodes in a linked list. e = e.next; public int countNodes(){ int count = 0; Element e = head; while(e != null){ count++; e = e.next; } return count; Complexity is O(n) COSC 301: Data Structures

Searching To search for an element, we traverse from head until we locate the object. Example: Count the number of nodes with data field equal to a given object. public int countNodes(Object obj){ int count = 0; Element e = head; while(e != null){ if(e.data.equals(obj)) count++; e = e.next; } return count; Complexity is O(n) COSC 301: Data Structures

Deletion To delete an element, we use either the extract method of MyLinkedList or that of the Element inner class. public void extract(Object obj) { Element element = head; Element previous = null; while(element != null && ! element.data.equals(obj)) { previous = element; element = element.next; } if(element == null) throw new IllegalArgumentException("item not found"); if(element == head) head = element.next; else previous.next = element.next; if(element == tail) tail = previous; Complexity is O(n) COSC 301: Data Structures

Deletion - Difference between the MyLinkedList and the Element extracts To delete an element, we use either the extract method of MyLinkedList or that of the Element inner class. try{ list.extract(obj1); } catch(IllegalArgumentException e){ System.out.println("Element not found"); } MyLinkedList.Element e = list.find(obj1); if(e != null) e.extract(); else System.out.println("Element not found"); COSC 301: Data Structures

Deletion – Deleting First and Last Element public void extractFirst() { if(head == null) throw new IllegalArgumentException("item not found"); head = head.next; tail = null; } Complexity is O(1) public void extractLast() { if(tail == null) throw new IllegalArgumentException("item not found"); if (head == tail) head = tail = null; else { Element previous = head; while (previous.next != tail) previous = previous.next; previous.next = null; tail = previous; } Complexity is O(n) COSC 301: Data Structures

Exercises For the MyLinkedList class, Implement each of the following methods: String toString() Element find(Object obj) void insertAt(int n) //counting the nodes from 1. State the complexity of each method. Which methods are affected if we do not use the tail reference in MyLinkedList class. COSC 301: Data Structures