Linked List by www.asyrani.com Chapter 5 Linked List by www.asyrani.com.

Slides:



Advertisements
Similar presentations
Singly linked lists Doubly linked lists
Advertisements

Lists and the Collection Interface Chapter 4. Chapter Objectives To become familiar with the List interface To understand how to write an array-based.
Linked Lists Linked Lists Representation Traversing a Linked List
Data Structures Using C++
CHP-5 LinkedList.
Introduction to Linked Lists In your previous programming course, you saw how data is organized and processed sequentially using an array. You probably.
Chapter 17 Linked List Saurav Karmakar Spring 2007.
M180: Data Structures & Algorithms in Java
Review Learn about linked lists
Stacks, Queues, and Deques. 2 A stack is a last in, first out (LIFO) data structure Items are removed from a stack in the reverse order from the way they.
Data Structures: A Pseudocode Approach with C
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.
COSC 1P03 Data Structures and Abstraction 5.1 Linear Linked Structures.
Linked Lists Compiled by Dr. Mohammad Alhawarat CHAPTER 04.
Data Structures & Algorithms
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 17: Linked Lists.
Lists and the Collection Interface Chapter 4. Chapter 4: Lists and the Collection Interface2 Chapter Objectives To become familiar with the List interface.
Fall 2007CS 2251 Lists and the Collection Interface Chapter 4.
Main Index Contents 11 Main Index Contents Abstract Model of a List Obj. Abstract Model of a List Obj. Insertion into a List Insertion into a List Linked.
Data Structures Topic #3. Today’s Agenda Ordered List ADTs –What are they –Discuss two different interpretations of an “ordered list” –Are manipulated.
C++ Programming: Program Design Including Data Structures, Fifth Edition Chapter 17: Linked Lists.
Chapter 3: Arrays, Linked Lists, and Recursion
Data Structures Using C++ 2E
CHAPTER 05 Compiled by: Dr. Mohammad Omar Alhawarat Stacks & Queues.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Custom Templatized Data Structures.
+ Simulation Design. + Types event-advance and unit-time advance. Both these designs are event-based but utilize different ways of advancing the time.
1 CSE 1342 Programming Concepts Lists. 2 Basic Terminology A list is a finite sequence of zero or more elements. –For example, (1,3,5,7) is a list of.
Data Structures Using Java1 Chapter 4 Linked Lists.
CMSC 341 B- Trees D. Frey with apologies to Tom Anastasio.
1 Linked-list, stack and queue. 2 Outline Abstract Data Type (ADT)‏ Linked list Stack Queue.
Kovács Zita 2014/2015. II. félév DATA STRUCTURES AND ALGORITHMS 26 February 2015, Linked list.
Elementary Data Organization. Outline  Data, Entity and Information  Primitive data types  Non primitive data Types  Data structure  Definition 
Data Structures Using C++1 Chapter 5 Linked Lists.
1. Circular Linked List In a circular linked list, the last node contains a pointer to the first node of the list. In a circular linked list,
1 Data Organization Example 1: Heap storage management –Keep track of free chunks of memory Example 2: A simple text editor –Maintain a sequence of lines.
Chapter 5 Linked List by Before you learn Linked List 3 rd level of Data Structures Intermediate Level of Understanding for C++ Please.
Data Structures Doubly and Circular Lists Lecture 07: Linked Lists
2/21/20161 List Operations Advanced Programming Ananda Gunawardena.
CS162 - Topic #7 Lecture: Dynamic Data Structures –Review of pointers and the new operator –Introduction to Linked Lists –Begin walking thru examples of.
Data Structures David Kauchak cs302 Spring Data Structures What is a data structure? Way of storing data that facilitates particular operations.
Chapter 17: Linked Lists. Objectives In this chapter, you will: – Learn about linked lists – Learn the basic properties of linked lists – Explore insertion.
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To introduce the basic concepts of linked lists ❏ To introduce the basic concepts.
1 Chapter 4 Unordered List. 2 Learning Objectives ● Describe the properties of an unordered list. ● Study sequential search and analyze its worst- case.
Linked Lists Chapter Introduction To The Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures.
CS32 Discussion Section 1B Week 3 TA: Hao Yu (Cody)
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 17: Linked Lists.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 18: Linked Lists.
Linked Lists Data Structures and Algorithms CS 244 Brent M. Dingle, Ph.D. Department of Mathematics, Statistics, and Computer Science University of Wisconsin.
 2015, Marcus Biel, Linked List Data Structure Marcus Biel, Software Craftsman
8/3/2007CMSC 341 BTrees1 CMSC 341 B- Trees D. Frey with apologies to Tom Anastasio.
Arrays, Link Lists, and Recursion Chapter 3. Sorting Arrays: Insertion Sort Insertion Sort: Insertion sort is an elementary sorting algorithm that sorts.
Data Structures and Algorithm Analysis Dr. Ken Cosh Linked Lists.
Data Structure and Algorithm: CIT231 Lecture 6: Linked Lists DeSiaMorewww.desiamore.com/ifm1.
CMSC 202 Computer Science II for Majors. CMSC 202UMBC Topics Templates Linked Lists.
LINKED LISTS.
Data Structures: A Pseudocode Approach with C 1 Chapter 5 Objectives Upon completion you will be able to: Explain the design, use, and operation of a linear.
1 Data Organization Example 1: Heap storage management Maintain a sequence of free chunks of memory Find an appropriate chunk when allocation is requested.
Chapter 3 Lists, Stacks, Queues. Abstract Data Types A set of items – Just items, not data types, nothing related to programming code A set of operations.
Chapter 16: Linked Lists.
Lecture 6 of Computer Science II
Data structures and algorithms
CE 221 Data Structures and Algorithms
CS 1114: Implementing Search
UNIT-3 LINKED LIST.
Stacks and Queues.
Arrays and Linked Lists
Linked Lists.
Intro to OOP with Java, C. Thomas Wu By : Zanariah Idrus
BY PROF. IRSHAD AHMAD LONE.
Chapter 9 Linked Lists.
Presentation transcript:

Linked List by www.asyrani.com Chapter 5 Linked List by www.asyrani.com

Before you learn Linked List 3rd level of Data Structures Intermediate Level of Understanding for C++ Please make sure to properly and slowly digesting the topics. We are going to take a deep breath now

List Definition List – A sequence of elements in certain linear order [English] List is where you put what to do one by one in sequence

Basic Operations Traversing Searching/retrieving Inserting Removing/deleting an element given its position

Basic Operations [English] Traversing – Where you navigate your shopping list one by one Searching/Retrieving – Where you starting to find out specific items that you want to buy in your shopping list Inserting – Insert new stuff to buy in your shopping list Removing/Deleting – Where you strike out the things that you have bought

Types of common lists Stacks and queues, where insertions and deletions can be done only at the head or the tail of the sequence. That is the rules!!! Head Tail

Linked list

What is Linked List? A linked list is a series of nodes Node 0 Node 1

What is Linked List? Each node holds an item of data and a pointer(s) to the next node in the list Node 0 Node 1 Node 2 Node 3 Node 4 Point to Node 1 Point to Node 3

What is Linked List? The last node's pointer is set to null NULL means end of node/no more nodes Node 0 Node 1 Node 4 NULL

What is Linked List? In order to hold on to a list, a program holds a pointer to the first node of the list. Node 0 Node 1 Node 4 Point to PROGRAM

Advantages Contain data of any type, including objects of other classes. Dynamic, so the length of a list can increase or decrease as necessary Full only when the system has insufficient memory Can be maintained in sorted order by inserting each new element at the proper point in the list linked list allows efficient insertion operations anywhere in the list

Comparison Array Linked List The size of a “conventional” C++ array however cannot be altered because the array size is fixed at compile time. Cannot contain objects and classes Arrays can become full as it depends on our defined array Time consuming Existing elements need to be moved Linked lists are dynamic, so the length of a list can increase or decrease as necessary. Can contain objects and classes Never becoming full unless computer does not have enough memory Faster than array Linked lists can be maintained in sorted order by inserting each new element at the proper point in the list

SINGLE LINKED LIST

Singly Linked List Singly linked list is one of the most primitive data structures Each node that makes up a singly linked list consists of a value/data and a reference to the next node (if any) in the list

SINGLY LINKED LIST OPERATIONS Insertion Searching Deletion Traversing

INSERTION

Insertion Adding a node to the tail/end of the list Node 0 Node 1 Head Tail

Insertion Adding a node to a singly linked list has only two cases: Head =  in which case the node we are adding is now both the head and tail of the list We simply need to append our node onto the end of the list updating the tail reference appropriately

Insertion (Case) Case 1 : Empty List Case When list is empty, which is indicated by (head == NULL)condition, the insertion is quite simple. Algorithm sets both head and tail to point to the new node.

Insertion (Case) Case 2 : Add First In this case, new node is inserted right before the current head node.

Insertion (Case) Case 2 : Add First 1st Step : Update the next link of a new node, to point to the current head node.

Insertion (Case) Case 2 : Add First 2nd Step : Update head link to point to the new node.

Insertion (Case) Case 3 : Add Last In this case, new node is inserted right after the current tail node.

Insertion (Case) Case 3 : Add Last 1st Step : Update the next link of the current tail node, to point to the new node.

Insertion (Case) Case 3 : Add Last 2nd Step : Update tail link to point to the new node.

Insertion (Case) Case 4 : General Case In general case, new node is always inserted between two nodes, which are already in the list. Head and tail links are not updated in this case.

Insertion (Case) Case 4 : General Case 1st Step : Update link of the "previous" node, to point to the new node.

Insertion (Case) Case 4 : General Case 2nd Step : Update link of the new node, to point to the "next" node.

Singly Linked List: Insertion Algorithm

DELETION

Deletion

Singly Linked List: Deletion Deleting a node from a linked list is also straightforward but there are a few cases we need to account for: The list is empty; or The node to remove is the only node in the linked-list; or We are removing the head node; or We are removing the tail node; or The node to remove is somewhere in between the head and tail; or The item to remove doesn’t exist in the linked-list

Singly Linked List: Deletion Algorithm The algorithm whose cases we have described will remove a node from anywhere within a list irrespective of whether the node is the head, etc.

Singly Linked List: Deletion Algorithm

SEARCHING

Singly Linked List: Searching Searching a linked-list is straightforward Traverse the list, checking the desired value/data with the value of each node in the linked-list

Singly Linked List: Searching Algorithm

TRAVERSING

Singly Linked List: Traversing the list Same as traversing a doubly linked list Start at the head and continue until come across a node that is . The two cases are as follows: Node = , we have exhausted all nodes in the linked-list Must update the node reference to be node.Next

Singly Linked List: Traversing Algorithm

REVERSE TRAVERSING

Singly Linked List: Traversing the list in reverse order Need to acquire a reference to the predecessor of a node (for singly linked list, this is an expensive operation) For each node, finding its predecessor is an O(n) operation. Over the course of traversing the whole list backwards the cost becomes O(n2)

Singly Linked List: Reverse Traversal Algorithm

Singly Linked List: Reverse Traversal The following figure depicts the previous reverse traversal algorithm being applied to a linked list with integers 5, 10, 1, and 40

Linked List: Reverse Traversal The algorithm is only of real interest when we are using singly linked list Actually double linked list make reverse list traversal simple and efficient

DOUBLE LINKED LIST

Doubly Linked List Is similar to singly linked list. The only difference is that each node has a reference to both the next and previous nodes in the list

Doubly Linked List The following algorithms for the doubly linked-list are exactly similar as those listed previously for singly linked-list: Searching Traversal

Doubly Linked-list: Insertion The only major difference with previous algorithm for singly linked-list is that we need to remember to bind the previous pointer of n to the previous tail node if n was not the first node to be inserted in the list

Doubly Linked-list: Insertion Algorithm

Doubly Linked-list: Insertion Algorithm Example: adding the following sequence integers to a list: 1,45, 60 and 12 will result as follows:

Doubly Linked-list: Deletion It is exactly the same as those algorithm defined in previous for singly linked-list. Like insertion, we have the added task of binding an additional reference (previous) to the correct value

Doubly Linked-list: Deletion Algorithm

Doubly Linked-list: Reverse Traversal Singly linked-list have a forward design, which is why the reverse traversal algorithm defined previously required some creative invention Doubly linked-list make reverse traversal as simple as forward traversal, except that we start at the tail node and update the pointers in the opposite direction

Doubly Linked-list: Reverse Traversal Algorithm

The end