C++ Programming:. Program Design Including

Slides:



Advertisements
Similar presentations
TK1924 Program Design & Problem Solving Session 2011/2012
Advertisements

DATA STRUCTURES USING C++ Chapter 5
Linked Lists Linked Lists Representation Traversing a Linked List
Data Structures Using C++
Chapter 17 Linked List Saurav Karmakar Spring 2007.
Review Learn about linked lists
Data Structures: A Pseudocode Approach with C
Data Structures & Algorithms
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 17: Linked Lists.
C++ Programming: Program Design Including Data Structures, Second Edition Chapter 17: Linked Lists.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 17: Linked Lists.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 17: Linked Lists.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 17 Linked.
C++ Programming: Program Design Including Data Structures, Fifth Edition Chapter 17: Linked Lists.
Linked Lists Dr. Youssef Harrath
Data Structures Using C++ 2E
Data Structures Using C++ 2E Chapter 7 Stacks. Data Structures Using C++ 2E2 Objectives Learn about stacks Examine various stack operations Learn how.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 4: Linked Lists Data Abstraction & Problem Solving with.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 18: Stacks and Queues (part 3)
Data Structures Using Java1 Chapter 4 Linked Lists.
Department of Computer Science Data Structures Using C++ 2E Chapter 5 Linked Lists.
C++ Programming: From Problem Analysis to Program Design, Second Edition Chapter 17: Linked Lists.
1 Chapter 16 Linked Structures Dale/Weems. 2 Chapter 16 Topics l Meaning of a Linked List l Meaning of a Dynamic Linked List l Traversal, Insertion and.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Stacks.
Lists Chapter 8. 2 Linked Lists As an ADT, a list is –finite sequence (possibly empty) of elements Operations commonly include: ConstructionAllocate &
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide
Copyright © 2012 Pearson Education, Inc. Chapter 17: Linked Lists.
Data Structures Using C++1 Chapter 5 Linked Lists.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 17: Linked Lists (part 2)
CHAPTER 17 LINKED LISTS. In this chapter, you will:  Learn about linked lists  Become aware of the basic properties of linked lists  Explore the insertion.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 18: Linked Lists (part 2)
Chapter 5 Linked List by Before you learn Linked List 3 rd level of Data Structures Intermediate Level of Understanding for C++ Please.
Copyright © 2012 Pearson Education, Inc. Chapter 20: Binary Trees.
Chapter 17: Linked Lists. Objectives In this chapter, you will: – Learn about linked lists – Learn the basic properties of linked lists – Explore insertion.
Linked list: a list of items (nodes), in which the order of the nodes is determined by the address, called the link, stored in each node C++ Programming:
1 CS 132 Spring 2008 Chapter 5 Linked Lists p
Linked Lists Chapter Introduction To The Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures.
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.
CHAPTER 51 LINKED LISTS. Introduction link list is a linear array collection of data elements called nodes, where the linear order is given by means of.
  A linked list is a collection of components called nodes  Every node (except the last one) contains the address of the next node  The address of.
LINKED LISTS.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
CPSC 252 Linked Lists III Page 1 Variations on Singly Linked Lists Inserting or deleting at the front of a list is different from at any other point in.
Chapter 16: Linked Lists.
Data Structures Using C++ 2E
Introduction to Linked Lists
Lectures linked lists Chapter 6 of textbook
Linked Lists Chapter 6 Section 6.4 – 6.6
Review Deleting an Element from a Linked List Deletion involves:
Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes
CS Data Structures Chapter 8 Lists Mehmet H Gunes
UNIT-3 LINKED LIST.
Chapter 4 Linked Lists.
Linked lists.
A Doubly Linked List There’s the need to access a list in reverse order prev next data dnode header 1.
Chapter 20: Binary Trees.
Introduction to Linked Lists
Array Lists Chapter 6 Section 6.1 to 6.3
Chapter 16-2 Linked Structures
Chapter 21: Binary Trees.
Chapter 4 Link Based Implementations
Chapter 18: Linked Lists.
[Chapter 4; Chapter 6, pp ] CSC 143 Linked Lists [Chapter 4; Chapter 6, pp ]
Doubly Linked List Implementation
Indirection.
Chapter 17: Linked Lists.
Chapter 16 Linked Structures
Linked lists.
Presentation transcript:

C++ Programming:. Program Design Including C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 17: Linked Lists

Objectives In this chapter, you will: Learn about linked lists Become aware of the basic properties of linked lists Explore the insertion and deletion operations on linked lists Discover how to build and manipulate a linked list Learn how to construct a doubly linked list C++ Programming: Program Design Including Data Structures, Fourth Edition

Introduction Data can be organized and processed sequentially using an array, called a sequential list Problems with an array Array size is fixed Unsorted array: searching for an item is slow Sorted array: insertion and deletion is slow C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked Lists Linked list: a list of items (nodes), in which the order of the nodes is determined by the address, called the link, stored in each node Link field in last node is NULL C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked Lists (continued) Example: Suppose that the first node is at memory location 1200, and the second node is at memory location 1575 C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked Lists (continued) Because each node of a linked list has two components, we need to declare each node as a class or struct Data type of a node depends on the specific application The link component of each node is a pointer C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked Lists: Some Properties C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked Lists: Some Properties (continued) current = head; Copies value of head into current C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked Lists: Some Properties (continued) current = current->link; C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked Lists: Some Properties (continued) C++ Programming: Program Design Including Data Structures, Fourth Edition

Traversing a Linked List The basic operations of a linked list are: Search to determine if an item is in the list Insert an item in the list Delete an item from the list Traversal: given a pointer to the first node of the list, step through the nodes of the list C++ Programming: Program Design Including Data Structures, Fourth Edition

Traversing a Linked List (continued) To traverse a linked list: Example: C++ Programming: Program Design Including Data Structures, Fourth Edition

Item Insertion and Deletion Consider the following definition of a node: We will use the following variable declaration: C++ Programming: Program Design Including Data Structures, Fourth Edition

Insertion Consider the following linked list: A new node with info 50 is to be created and inserted after p C++ Programming: Program Design Including Data Structures, Fourth Edition

The sequence of statements to insert the node is very important The sequence of statements to insert the node is very important. Suppose that we reverse the sequence of the statements and execute the statements in the following order:

Deletion Node with info 34 is removed from the list, but memory is still occupied; node is dangling C++ Programming: Program Design Including Data Structures, Fourth Edition

Building a Linked List (version 1) This method’s propety: If data is unsorted: The list will be unsorted Can build a linked list forward or backward Forward: a new node is always inserted at the end of the linked list Backward: a new node is always inserted at the beginning of the list C++ Programming: Program Design Including Data Structures, Fourth Edition

Building a Linked List Forward You need three pointers to build the list: One to point to the first node in the list, which cannot be moved One to point to the last node in the list One to create the new node C++ Programming: Program Design Including Data Structures, Fourth Edition

Building a Linked List Forward (continued) We now repeat statements 1 through 6b three more times: C++ Programming: Program Design Including Data Structures, Fourth Edition

Building a Linked List Backward The algorithm is: Initialize first to NULL For each item in the list Create the new node, newNode Store the item in newNode Insert newNode before first Update the value of the pointer first C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked List as an ADT The basic operations on linked lists are: Initialize the list Determine whether the list is empty Print the list Find the length of the list Destroy the list C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked List as an ADT (continued) The basic operations on linked lists are: (continued) Retrieve the info contained in the first node Retrieve the info contained in the last node Search the list for a given item Insert an item in the list Delete an item from the list Make a copy of the linked list C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked List as an ADT (continued) In general, there are two types of linked lists: Sorted and unsorted lists The algorithms to implement the operations search, insert, and remove slightly differ for sorted and unsorted lists C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked List as an ADT (continued) If a linked list is unordered, we can insert a new item at either the end or the beginning buildListForward inserts item at the end buildListBackward inserts new item at the beginning To accommodate both operations, we will write two functions: insertFirst and insertLast We will use two pointers in the list: first and last C++ Programming: Program Design Including Data Structures, Fourth Edition

Structure of Linked List Nodes The node has two member variables To simplify operations such as insert and delete, we define the class to implement the node of a linked list as a struct The definition of the struct nodeType is: C++ Programming: Program Design Including Data Structures, Fourth Edition

Member Variables of the class linkedListType We use two pointers: first and last We also keep a count of the number of nodes in the list linkedListType has three member variables: C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked List Iterators One of the basic operations performed on a list is to process each node of the list List must be traversed, starting at first node Common technique is to provide an iterator Iterator: object that produces each element of a container, one element at a time The two most common operations are: ++ (the increment operator) * (the dereferencing operator) C++ Programming: Program Design Including Data Structures, Fourth Edition

Linked List Iterators (continued) Note that an iterator is an object We need to define a class (linkedListIterator) to create iterators to objects of the class linkedListType Would have one member variable: Refers to (the current) node C++ Programming: Program Design Including Data Structures, Fourth Edition

Good Use for Templates Since a node can contain anything (not just an int), we want the nodeClass to be templated. template <class Type> class nodeType { private: Type info; nodeType<Type> * link }; C++ Programming: Program Design Including Data Structures, Fourth Edition

Print the List C++ Programming: Program Design Including Data Structures, Fourth Edition

Length of a List C++ Programming: Program Design Including Data Structures, Fourth Edition

Retrieve the Data of the First Node C++ Programming: Program Design Including Data Structures, Fourth Edition

Retrieve the Data of the Last Node C++ Programming: Program Design Including Data Structures, Fourth Edition

Begin and End C++ Programming: Program Design Including Data Structures, Fourth Edition

Copy the List Steps: Create a node, and call it newNode Copy the info of the node (in the original list) into newNode Insert newNode at the end of the list being created C++ Programming: Program Design Including Data Structures, Fourth Edition

Destructor C++ Programming: Program Design Including Data Structures, Fourth Edition

Copy Constructor C++ Programming: Program Design Including Data Structures, Fourth Edition

Overloading the Assignment Operator C++ Programming: Program Design Including Data Structures, Fourth Edition

Search the List Steps: Compare the search item with the current node in the list If the info of the current node is the same as the search item, stop the search Otherwise, make the next node the current node Repeat Step 1 until the item is found Or, until no more data is left in the list to compare with the search item C++ Programming: Program Design Including Data Structures, Fourth Edition

Insert the First Node Steps: Create a new node Store the new item in the new node Insert the node before first Increment count by 1 C++ Programming: Program Design Including Data Structures, Fourth Edition

Insert the Last Node C++ Programming: Program Design Including Data Structures, Fourth Edition

Delete a Node Case 1: List is empty Case 2: List is not empty If the list is empty, output an error message Case 2: List is not empty The node to be deleted is the first node First scenario: List has only one node C++ Programming: Program Design Including Data Structures, Fourth Edition

Delete a Node (continued) Second scenario: List of more than one node C++ Programming: Program Design Including Data Structures, Fourth Edition

Delete a Node (continued) Case 3: Node to be deleted is not the first one Case 3a: Node to be deleted is not last one C++ Programming: Program Design Including Data Structures, Fourth Edition

Delete a Node (continued) Case 3b: Node to be deleted is the last node C++ Programming: Program Design Including Data Structures, Fourth Edition

Delete a Node (continued) Case 4: Node to be deleted is not in the list The list requires no adjustment Simply output an error message C++ Programming: Program Design Including Data Structures, Fourth Edition

Header File of the Unordered Linked List C++ Programming: Program Design Including Data Structures, Fourth Edition

Header File of the Unordered Linked List (continued) C++ Programming: Program Design Including Data Structures, Fourth Edition