Chapter 5. Stacks, Queues, and Deques
Contents
5.1 Stacks | 194 |
5.1.1 The Stack Abstract Data Type | 195 |
5.1.2 The STL Stack | 196 |
5.1.3 A C++ Stack Interface | 196 |
5.1.4 A Simple Array-Based Stack Implementation | 198 |
5.1.5 Implementing a Stack with a Generic Linked List | 202 |
5.1.6 Reversing a Vector Using a Stack | 203 |
5.1.7 Matching Parentheses and HTML Tags | 204 |
5.2 Queues | 208 |
5.2.1 The Queue Abstract Data Type | 208 |
5.2.2 The STL Queue | 209 |
5.2.3 A C++ Queue Interface | 210 |
5.2.4 A Simple Array-Based Implementation | 211 |
5.2.5 Implementing a Queue with a Circularly Linked List | 213 |
5.3 Double-Ended Queues | 217 |
5.3.1 The Deque Abstract Data Type | 217 |
5.3.2 The STL Deque | 218 |
5.3.3 Implementing a Deque with a Doubly Linked List | 218 |
5.3.4 Adapters and the Adapter Design Pattern | 220 |
5.4 Exercises | 223 |
Stacks
A stack is a container of objects that are inserted and removed according to the last-in first-out (LIFO) principle. Objects can be inserted into a stack at any time, but only the most recently inserted (that is, "last") object can be removed at any time. The name "stack" is derived from the metaphor of a stack of plates in a spring-loaded, cafeteria plate dispenser. In this case, the fundamental operations involve the "pushing" and "popping" of plates on the stack. When we need a new plate from the dispenser, we "pop" the top plate off the stack, and when we add a plate, we "push" it down on the stack to become the new top plate. Perhaps an ...
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.