Chapter 6. List and Iterator ADTs

List and Iterator ADTs

Contents

6.1 Vectors

228

6.1.1 The Vector Abstract Data Type

228

6.1.2 A Simple Array-Based Implementation

229

6.1.3 An Extendable Array Implementation

231

6.1.4 STL Vectors

236

6.2 Lists

238

6.2.1 Node-Based Operations and Iterators

238

6.2.2 The List Abstract Data Type

240

6.2.3 Doubly Linked List Implementation

242

6.2.4 STL Lists

247

6.2.5 STL Containers and Iterators

248

6.3 Sequences

255

6.3.1 The Sequence Abstract Data Type

255

6.3.2 Implementing a Sequence with a Doubly Linked List

255

6.3.3 Implementing a Sequence with an Array

257

6.4 Case Study: Bubble-Sort on a Sequence

259

6.4.1 The Bubble-Sort Algorithm

259

6.4.2 A Sequence-Based Analysis of Bubble-Sort

260

6.5 Exercises

262

Vectors

Suppose we have a collection S of n elements stored in a certain linear order, so that we can refer to the elements in S as first, second, third, and so on. Such a collection is generically referred to as a list or sequence. We can uniquely refer to each element e in S using an integer in the range [0,n − 1] that is equal to the number of elements of S that precede e in S. The index of an element e in S is the number of elements that are before e in S. Hence, the first element in S has index 0 and the last element has index n − 1. Also, if an element of S has index i, its previous element (if it exists) has index i − 1, and its next element (if it exists) has index i + 1. This concept of index ...

Get Data Structures and Algorithms in C++, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.