Abstract
We describe an efficient, purely functional implementation of deques with catenation. In addition to being an intriguing problem in its own right, finding a purely functional implementation of catenable deques is required to add certain sophisticated programming constructs to functional programming languages. Our solution has a worst-case running time of O(1) for each push, pop, inject, eject and catenation. The best previously known solution has an O(log* k) time bound for the fcth deque operation. Our solution is not only faster but simpler. A key idea used in our result is an algorithmic technique related to the redundant digital representations used to avoid carry propagation in binary counting.
Original language | English (US) |
---|---|
Pages (from-to) | 577-603 |
Number of pages | 27 |
Journal | Journal of the ACM |
Volume | 46 |
Issue number | 5 |
DOIs | |
State | Published - 1999 |
All Science Journal Classification (ASJC) codes
- Software
- Control and Systems Engineering
- Information Systems
- Hardware and Architecture
- Artificial Intelligence
Keywords
- Catenation
- Data structures
- Double-ended queue
- Persistent data structures
- Purely functional data structures
- Purely functional queues
- Queue
- Stack