Copyright © 2012 Pearson Education, Inc. Chapter 17: Linked Lists.

Slides:



Advertisements
Similar presentations
Chapter 17 Linked Lists.
Advertisements

Stacks, Queues, and Linked Lists
Linked Lists.
DATA STRUCTURES USING C++ Chapter 5
Data Structure Lecture-3 Prepared by: Shipra Shukla Assistant Professor Kaziranga University.
Chapter 17 Linked List Saurav Karmakar Spring 2007.
M180: Data Structures & Algorithms in Java
Review Learn about linked lists
Data Structures: A Pseudocode Approach with C
Linked Lists
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 17: Linked Lists.
Chapter 12 C Data Structures Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education Inc.
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.
Chapter 4 Linked Structures. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 4-2 Chapter Objectives Describe the use of references to create.
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.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 12 – Data Structures Outline 12.1Introduction.
Chapter 4 Linked Lists. © 2005 Pearson Addison-Wesley. All rights reserved4-2 Preliminaries Options for implementing an ADT List –Array has a fixed size.
1 CSC 211 Data Structures Lecture 10 Dr. Iftikhar Azim Niaz 1.
Queue, Deque, and Priority Queue Implementations Chapter 11 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
Starting Out with C++, 3 rd Edition 1 Chapter 17 Linked Lists.
Data Structures Using C++ 2E
Chapter 12 Data Structure Associate Prof. Yuh-Shyan Chen Dept. of Computer Science and Information Engineering National Chung-Cheng University.
Reference: Vinu V Das, Principles of Data Structures using C and C++
2 Preliminaries Options for implementing an ADT List Array has a fixed size Data must be shifted during insertions and deletions Linked list is able to.
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.
1 CSC 211 Data Structures Lecture 21 Dr. Iftikhar Azim Niaz 1.
 2007 Pearson Education, Inc. All rights reserved C Data Structures.
Binary Trees Chapter Definition And Application Of Binary Trees Binary tree: a nonlinear linked list in which each node may point to 0, 1, or two.
Linked Lists part 2 CS 244 Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics, and Computer Science University.
Department of Computer Science Data Structures Using C++ 2E Chapter 5 Linked Lists.
1 Data Structures CSCI 132, Spring 2014 Lecture 20 Linked Lists.
Lists Chapter 8. 2 Linked Lists As an ADT, a list is –finite sequence (possibly empty) of elements Operations commonly include: ConstructionAllocate &
Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Chapter 17: Linked Lists.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide
Copyright © 2012 Pearson Education, Inc. Chapter 17: Linked Lists.
Linked Lists. Array List Issues Painful insert/remove at start/middle.
Copyright © 2012 Pearson Education, Inc. Chapter 20: Binary Trees.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 20: Binary Trees.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Circular linked list A circular linked list is a linear linked list accept that last element points to the first element.
CS162 - Topic #7 Lecture: Dynamic Data Structures –Review of pointers and the new operator –Introduction to Linked Lists –Begin walking thru examples of.
1 CSC 211 Data Structures Lecture 11 Dr. Iftikhar Azim Niaz 1.
Linked List.  Is a series of connected nodes, where each node is a data structure with data and pointer(s) Advantages over array implementation  Can.
1 Linked List. Outline Introduction Insertion Description Deletion Description Basic Node Implementation Conclusion.
Linked List. LINKED LIST Link is collection of similar type of elements. There are two ways of maintaining a list in memory. The first way is store the.
Data Structure & Algorithms
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Linked Lists Outline Introduction Self-Referential Structures.
Linked Lists Chapter Introduction To The Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 20: Binary Trees.
  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.
Data Structure and Algorithm: CIT231 Lecture 6: Linked Lists DeSiaMorewww.desiamore.com/ifm1.
© Oxford University Press All rights reserved. Data Structures Using C, 2e Reema Thareja.
List Structures What is a list? A homogeneous collection of elements with a linear relationship between the elements linear relationship - each element.
1 CSE 2341 Object Oriented Programming with C++ Note Set #18.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Linked Lists Chapter 6 Section 6.4 – 6.6
Review Deleting an Element from a Linked List Deletion involves:
Chapter 4 Linked Lists.
Linked lists.
CSCI 3333 Data Structures Linked Lists.
Chapter 20: Binary Trees.
Chapter 21: Binary Trees.
Chapter 18: Linked Lists.
Chapter 17: Linked Lists Starting Out with C++ Early Objects
Recursive Linked List Operations
Chapter 17: Linked Lists.
Linked lists.
Presentation transcript:

Copyright © 2012 Pearson Education, Inc. Chapter 17: Linked Lists

Copyright © 2012 Pearson Education, Inc. Reminders First Midterm Exam –March 11 Friday Homework 2 –Due March 22 Tuesday All programs are available on the class web page. –home.manhattan.edu/~tina.tianhome.manhattan.edu/~tina.tian

Copyright © 2012 Pearson Education, Inc Introduction to the Linked List ADT

Copyright © 2012 Pearson Education, Inc. Introduction to Linked List A linked list is a series of connected nodes, where each node is a data structure. A linked list can grow or shrink in size as the program runs –Nodes are dynamically allocated

Copyright © 2012 Pearson Education, Inc. Advantage of Linked Lists Advantage of linked lists over arrays –It is faster to insert a node into a linked list or delete one from the list

Copyright © 2012 Pearson Education, Inc. Node Organization A node contains: –data: one or more data fields – may be organized as structure, object, etc. –a pointer that can point to another node data pointer

Copyright © 2012 Pearson Education, Inc. Declaring a Node Declare a node: struct ListNode { int data; ListNode *next; }; The pointer can hold the address of any object that is a ListNode structure. –Self-referential data structure

Copyright © 2012 Pearson Education, Inc. Linked List Organization Linked list contains 0 or more nodes: Has a list head to point to first node Last node points to NULL NULL list head

Copyright © 2012 Pearson Education, Inc. NULL NULL is a named constant, defined in the iostream file, that stands for address 0. The address 0 is considered an unusable address. Most computers store special operating system data structures in the lower areas of memory.

Copyright © 2012 Pearson Education, Inc. Empty List If a list currently contains 0 nodes, it is the empty list In this case the list head points to NULL NULL list head

Copyright © 2012 Pearson Education, Inc. Defining a Linked List Define a pointer for the head of the list: ListNode *head; Head pointer initialized to NULL to indicate an empty list ListNode *head = NULL; NULL head NULL list head

Copyright © 2012 Pearson Education, Inc. NULL Pointer Is used to indicate end-of-list ListNode *p; while (p != NULL)... Can also test the pointer itself: while (p)... // same meaning // as above NULL list head

Copyright © 2012 Pearson Education, Inc. Introduction to Linked List Nodes can be added to or removed from the linked list during execution NULL list head newNode

Copyright © 2012 Pearson Education, Inc. Linked Lists vs. Arrays Linked lists can insert a node between other nodes easily NULL list head

Copyright © 2012 Pearson Education, Inc Linked List Operations

Copyright © 2012 Pearson Education, Inc. Linked List Operations Basic operations: –append a node to the end of the list –insert a node within the list –traverse the linked list –delete a node –delete/destroy the list

Copyright © 2012 Pearson Education, Inc. Create a New Node Allocate memory for the new node: newNode = new ListNode; Initialize the contents of the node: newNode->value = num; Set the pointer field to NULL : newNode->next = NULL; newNode 23 NULL newNode 23

Copyright © 2012 Pearson Education, Inc. Appending a Node Add a node to the end of the list Basic process: –Create the new node (as already described) –Add node to the end of the list: If list is empty, set head pointer to this node Else, –traverse the list to the end –set pointer of last node to point to new node

Copyright © 2012 Pearson Education, Inc. Appending a Node NULL list head newNode 23 NULL nodePtr New node created, end of list located

Copyright © 2012 Pearson Education, Inc. Appending a Node list head newNode 23 NULL nodePtr New node added to end of list

Copyright © 2012 Pearson Education, Inc. Traversing a Linked List Visit each node in a linked list: display contents, validate data, etc. Basic process: –set a pointer to the contents of the head pointer –while pointer is not NULL process data go to the next node by setting the pointer to the pointer field of the current node in the list –end while

Copyright © 2012 Pearson Education, Inc. Traversing a Linked List NULL list head nodePtr nodePtr points to the node containing 5, then the node containing 13, then the node containing 19, then points to NULL, and the list traversal stops

Copyright © 2012 Pearson Education, Inc. Inserting a Node into a Linked List Used to maintain a linked list in order Requires two pointers to traverse the list: –pointer to locate the node with data value greater than that of node to be inserted –pointer to 'trail behind' one node, to point to node before point of insertion New node is inserted between the nodes pointed at by these pointers

Copyright © 2012 Pearson Education, Inc. Inserting a Node into a Linked List NULL list head newNode 17 NULL nodePtrpreviousNode New node created, correct position located

Copyright © 2012 Pearson Education, Inc. Inserting a Node into a Linked List NULL list head newNode 17 nodePtrpreviousNode New node inserted in order in the linked list

Copyright © 2012 Pearson Education, Inc. Deleting a Node Used to remove a node from a linked list If list uses dynamic memory, then delete node from memory Requires two pointers: one to locate the node to be deleted, one to point to the node before the node to be deleted

Copyright © 2012 Pearson Education, Inc. Deleting a Node NULL list head nodePtrpreviousNode Locating the node containing 13

Copyright © 2012 Pearson Education, Inc. Deleting a Node Adjusting pointer around the node to be deleted NULL list head nodePtrpreviousNode

Copyright © 2012 Pearson Education, Inc. Deleting a Node NULL list head 519 nodePtrpreviousNode Linked list after deleting the node containing 13

Copyright © 2012 Pearson Education, Inc. Destroying a Linked List Must remove all nodes used in the list To do this, use list traversal to visit each node For each node, –Unlink the node from the list –If the list uses dynamic memory, then free the node’s memory Set the list head to NULL

Copyright © 2012 Pearson Education, Inc. Variations of the Linked List Other linked list organizations: –doubly-linked list: each node contains two pointers: one to the next node in the list, one to the previous node in the list NULL list head NULL

Copyright © 2012 Pearson Education, Inc. Variations of the Linked List Other linked list organizations: –circular linked list: the last node in the list points back to the first node in the list, not to NULL list head 51319

Copyright © 2012 Pearson Education, Inc. The STL list Container Template for a doubly linked list Member functions for –locating beginning, end of list: front, back, end –adding elements to the list: insert, merge, push_back, push_front –removing elements from the list: erase, pop_back, pop_front, unique See Table 17-1 for a list of member functions