Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved. 0-13-140909-3 1 More Linking.

Slides:



Advertisements
Similar presentations
Lists Chapter 6 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved
Advertisements

DATA STRUCTURES USING C++ Chapter 5
Chapter 3 – Lists A list is just what the name implies, a finite, ordered sequence of items. Order indicates each item has a position. A list of size 0.
CHP-5 LinkedList.
Review Learn about linked lists
Chapter Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
Data Structures: A Pseudocode Approach with C
1 Linked Lists Gordon College Prof. Brinton. 2 Linked List Basics Why use? 1.Efficient insertion or deletion into middle of list. (Arrays are not efficient.
Linked Lists Compiled by Dr. Mohammad Alhawarat CHAPTER 04.
Chapter 4.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth 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.
Chapter 4 Linked Lists. © 2005 Pearson Addison-Wesley. All rights reserved4-2 Preliminaries Options for implementing an ADT List –Array has a fixed size.
C++ Programming: Program Design Including Data Structures, Fifth Edition Chapter 17: Linked Lists.
Queues Chapter 8 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2008 Pearson Education, Inc., Upper.
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.
Data Structures Week 5 Further Data Structures The story so far  We understand the notion of an abstract data type.  Saw some fundamental operations.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Stacks.
Stacks CHAPTER 7 MAY 21, 2015 Adapted from instructor resource slides Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005.
Searching: Binary Trees and Hash Tables CHAPTER 12 6/4/15 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education,
Adapted from instructor resources Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights.
Comp 245 Data Structures Linked Lists. An Array Based List Usually is statically allocated; may not use memory efficiently Direct access to data; faster.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
Exam Review 5/28/15. Software Development (Review)  Make it work…then make it pretty can result in dangerous code  Better to take a unified, consistent.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
A first look an ADTs Solving a problem involves processing data, and an important part of the solution is the careful organization of the data In order.
More Linking Up with Linked Lists Chapter 11 5/19/2015 Adopted from instructor resource slides Nyhoff, ADTs, Data Structures and Problem Solving with C++,
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Stacks.
Standard Template Library The Standard Template Library was recently added to standard C++. –The STL contains generic template classes. –The STL permits.
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.
CS2006- Data Structures I Chapter 5 Linked Lists III.
Copyright © 0 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Java From Control Structures through Data Structures by Tony.
1 Linked Lists (Lec 6). 2  Introduction  Singly Linked Lists  Circularly Linked Lists  Doubly Linked Lists  Multiply Linked Lists  Applications.
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 Lists Dr. Bernard Chen Ph.D. University of Central Arkansas Spring 2010.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch ISBN © 2012 Pearson Education, Inc., Upper Saddle River,
Chapter 17: Linked Lists. Objectives In this chapter, you will: – Learn about linked lists – Learn the basic properties of linked lists – Explore insertion.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Lists Chapter.
1 Linked List. Outline Introduction Insertion Description Deletion Description Basic Node Implementation Conclusion.
Data Structure & Algorithms
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,
Data Structures and Algorithm Analysis Dr. Ken Cosh Linked Lists.
LINKED LISTS.
© Oxford University Press All rights reserved. Data Structures Using C, 2e Reema Thareja.
Copyright © 2012 Pearson Education, Inc. Chapter 17: Linked Lists.
1 Data Organization Example 1: Heap storage management Maintain a sequence of free chunks of memory Find an appropriate chunk when allocation is requested.
Linked List ADT used to store information in a list
Unit – I Lists.
Lectures linked lists Chapter 6 of textbook
Linked Lists Chapter 6 Section 6.4 – 6.6
Data Structure and Algorithms
More Linking Up with Linked Lists
Chapter 4 Linked Lists.
Queues Chapter 8 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved
LINKED LISTS CSCD Linked Lists.
Array Lists Chapter 6 Section 6.1 to 6.3
Further Data Structures
Dynamic Data Structures and Generics
Dynamic Data Structures and Generics
17CS1102 DATA STRUCTURES © 2018 KLEF – The contents of this presentation are an intellectual and copyrighted property of KL University. ALL RIGHTS RESERVED.
Linked Lists Chapter 5 (continued)
Presentation transcript:

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved More Linking Up with Linked Lists Chapter 11

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Chapter Contents 11.1 Some Variants of Singly-Linked Lists 11.2 Linked Implementation of Sparse Polynomials 11.3 Doubly-Linked Lists and the Standard C++ list 11.4 Case Study: Larger-Integer Arithmetic 11.5 Other Multiply-Linked Lists

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Chapter Objectives Survey common variants of linked lists and why they are used Study in detail an application of linked lists to implement sparse polynomials Describe doubly-linked lists and how they are used to implement C++ STL list container Build a class that makes it possible to do arithmetic with large integers Look briefly at some other applications of multiply- linked lists

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Lists with Head Nodes Consider linked lists from Chapter 6 –First node is different from others –Has no predecessor Thus insertions and deletions must consider two cases –First node or not first node –The algorithm is different for each

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Lists with Head Nodes Dual algorithms can be reduced to one –Create a "dummy" head node –Serves as predecessor holding actual first element Thus even an empty list has a head node

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Lists with Head Nodes For insertion at beginning of list –Head node is predecessor for new node newptr->next = predptr->next; predptr->next = newptr;

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Lists with Head Nodes For deleting first element from a list with a head node –Head node is the predecessor predptr->next = ptr->next; delete ptr;

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Circular Linked Lists Set the link in last node to point to first node –Each node now has both predecessor and successor –Insertions, deletions now easier Special consideration required for insertion to empty list, deletion from single item list

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Circular Linked Lists Traversal algorithm must be adjusted if (first != 0) // list not empty { ptr = first; do { // process ptr->data ptr = ptr->next; } while (ptr != first); } A do-while loop must be used instead of a while loop –Why is this required?

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Implementation of Sparse Polynomials Consider a polynomial of degree n –Can be represented by a list For a sparse polynomial this is not efficient

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Implementation of Sparse Polynomials We could represent a polynomial by a list of ordered pairs –{ (coef, exponent) … } Fixed capacity of array still problematic –Wasted space for sparse polynomial

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Implementation of Sparse Polynomials Linked list of these ordered pairs provides an appropriate solution –Each node has form shown Now whether sparse or well populated, the polynomial is represented efficiently

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Linked Implementation of Sparse Polynomials Note start of Polynomial class templatePolynomial class template –Type parameter CoefType –Term and Node are inner classes Addition operator –Adds coefficients of like degrees –Must traverse the two addend polynomials –Requires temporary pointers for each polynomial (the addends and the resulting sum)

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Addition Operator Requires temporary pointers for each polynomial (the addends and the resulting sum)

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Addition Operator As traversal takes place –Compare exponents –If different, node with smaller exponent and its coefficient attached to result polynomial –If exponents same, coefficients added, new corresponding node attached to result polynomial View source code View source code

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Doubly-Linked Lists Bidirectional lists –Nodes have data part, forward and backward link Facilitates both forward and backward traversal –Requires pointers to both first and last nodes

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Doubly-Linked Lists To insert a new node –Set forward and backward links to point to predecessor and successor –Then reset forward link of predecessor, backward link of successor

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Doubly-Linked Lists To delete a node –Reset forward link of predecessor, backward link of successor –Then delete removed node

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved The STL list Class Template A sequential container –Optimized for insertion and erasure at arbitrary points in the sequence. –Implemented as a circular doubly-linked list with head node.

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Comparing List With Other Containers Note : list does not support direct access –does not have the subscript operator [ ]. PropertyArray vector deque list Direct/random access ( [] )  (exclnt)  (good)X Sequential access  Insert/delete at front  (poor)  Insert/delete in middle  Insert/delete at end  Overheadlowestlowlow/mediumhigh

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved list Iterators list 's iterator is "weaker" than that for vector.  vector : random access iterators  list : bidirectional iterators Operations in common  ++Move iterator to next element (like ptr = ptr-> next )  --Move iterator to preceding element (like ptr = ptr-> prev )  *dereferencing operator (like ptr-> data )

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved list Iterators Operators in common  =assignment (for same type iterators) it1 = it2 makes i t1 positioned at same element as it2  == and != (for same type iterators) checks whether iterators are positioned at the same element  See basic list operations, Table 11-2, pg 621  View demonstration of list operations, Fig. 11-1Fig. 11-1

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Example: Internet Addresses Consider a program that stores IP addresses of users who make a connection with a certain computer –We store the connections in an AddressCounter object –Tracks unique IP addresses and how many times that IP connected View source code, Fig. 11.2Fig –Note uses of STL list and operators

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved The STL list Class Template Node structure struct list_node { pointer next, prev; T data; }

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved The STL list Class Template But it's allo/deallo-cation scheme is complex –Does not simply using new and delete operations. Using the heap manager is inefficient for large numbers of allo/deallo-cations –Thus it does it's own memory management.

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved The STL list Memory Management When a node is allocated 1.If there is a node on the free list, allocate it. This is maintained as a linked stack 2.If the free list is empty: a)Call the heap manager to allocate a block of memory (a "buffer", typically 4K) b)Carve it up into pieces of size required for a node of a list.

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved The STL list Memory Management When a node is deallocated –Push it onto the free list. When all lists of this type T have been destroyed –Return it to the heap

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Case Study: Large-Integer Arithmetic Recall that numeric representation of numbers in computer memory places limits on their size –32 bit integers, two's complement max We will design a BigInt class –Process integers of any size –For simplicity, nonnegative integers only

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved BigInt Design First step : select a storage structure –We choose a linked list –Each node sores a block of up to 3 consecutive digits –Doubly linked list for traversing in both directions

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved BigInt Design Input in blocks of 3 integers, separated by spaces –As each new block entered, node added at end Output is traversal, left to right

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved BigInt Design Addition adds the groupings right to left –Keeping track of carry digits

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved BigInt Implementation Standard list type provides all the tools we need Note class declaration, Fig. 11.3AFig. 11.3A View class definition, Fig. 11.3BFig. 11.3B Driver program to demonstrate use of the class, Fig 11.4Fig 11.4

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Multiply-Ordered Lists Ordered linked list –Nodes arranged so data items are in ascending/descending order Straightforward when based on one data field –However, sometimes necessary to maintain links with a different ordering Possible solution –Separate ordered linked lists – but wastes space

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Multiply-Ordered Lists Better approach –Single list –Multiple links

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Sparse Matrices Usual storage is 2D array or 2D vector If only a few nonzero entries –Can waste space Stored more efficiently with linked structure –Similar to sparse polynomials –Each row is a linked list –Store only nonzero entries for the row

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved For we represent with Sparse Matrices A =

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Sparse Matrices This still may waste space –Consider if many rows were all zeros Alternative implementation –Single linked list –Each node has row, column, entry, link Resulting list

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Sparse Matrices However … this loses direct access to rows Could replace array of pointers with –Linked list of row head nodes –Each contains pointer to non empty row list

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Sparse Matrices If columnwise processing is desired –Use orthogonal list –Each node stores row, column, value, pointer to row successor, pointer to column successor

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Sparse Matrices Note the resulting representation of the matrix A =

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Generalized Lists Examples so far have had atomic elements –The nodes are not themselves lists Consider a linked list of strings –The strings themselves can be linked lists of characters This is an example of a generalized list

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Generalized Lists Commonly represented as linked lists where –Nodes have a tag field along with data and link Tag used to indicate whether data field holds –Atom –Pointer to a list

Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Generalized Lists Lists can be shared –To represent (2, (4,6), (4,6)) For polynomials in two variables P(x,y) = 3 + 7x + 14y y 7 – 7x 2 y x 6 y 7