Abstract
Data structures are not so much algorithms as they are the fundamental constructs around which you build your application. Becoming fluent in what the standard data structures can do for you is essential to get full value from them.
This puts data structures slightly out of sync with the rest of the catalog. Perhaps the most useful aspect of it will be the pointers to various implementations and data structure libraries. Many of these data structures are nontrivial to implement well, so the programs we point to will be useful as models even if they do not do exactly what you need. Certain fundamental data structures, like kd-trees and suffix trees, are not as well known as they should be. Hopefully, this catalog will serve to better publicize them.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Bibliography
R. Sedgewick. Algorithms in C++, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms. Addison-Wesley, Reading MA, third edition, 1998.
M. Goodrich and R. Tamassia. Data Structures and Algorithms in Java. Wiley, fourth edition, 2005.
D. Mehta and S. Sahni. Handbook of Data Structures and Applications. Chapman and Hall / CRC, Boca Raton, FL, 2005.
N. Josuttis. The C++ Standard Library: A tutorial and reference. Addison-Wesley, 1999.
S. Meyers. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library. Addison-Wesley Professional, 2001.
D. Musser, G. Derge, and A. Saini. STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library. Addison-Wesley Professional, second edition, 2001.
K. Mehlhorn and S. Naher. LEDA: A platform for combinatorial and geometric computing. Cambridge University Press, 1999.
M. Goodrich, R. Tamassia, and L. Vismara. Data structures in JDSL. In D. Mehta and S. Sahni, editors, Handbook of Data Structures and Applications, pages 43:1–43:22. Chapman and Hall / CRC, 2005.
D. Knuth. The Art of Computer Programming, Volume 1: Fundamental Algorithms. Addison-Wesley, Reading MA, third edition, 1997.
G. Gonnet and R. Baeza-Yates. Handbook of Algorithms and Data Structures. Addison-Wesley, Wokingham, England, second edition, 1991.
M. Weiss. Data Structures and Algorithm Analysis in Java. Addison Wesley, second edition, 2006.
M. Goldwasser, D. Johnson, and C. McGeoch, editors. Data Structures, Near Neighbor Searches, and Methodology: Fifth and Sixth DIMACS Implementation Challenges, volume 59. AMS, Providence RI, 2002.
J. Vitter. External memory algorithms and data structures: Dealing with massive data. ACM Computing Surveys, 33:209–271, 2001.
L. Arge, G. Brodal, and R. Fagerberg. Cache-oblivious data structures. In D. Mehta and S. Sahni, editors, Handbook of Data Structures and Applications, pages 34:1–34:27. Chapman and Hall / CRC, 2005.
P. Sanders. Fast priority queues for cached memory. ACM Journal of Experimental Algorithmics, 5, 2000.
B. Cherkassky, A. Goldberg, and C. Silverstein. Buckets, heaps, lists, and monotone priority queues. SIAM J. Computing, 28:1326–1346, 1999.
D. W. Jones. An empirical comparison of priority-queue and event-set implementations. Communications of the ACM, 29:300–311, 1986.
A. LaMarca and R. Ladner. The influence of caches on the performance of heaps. ACM J. Experimental Algorithmics, 1, 1996.
S. Sahni. Double-ended priority queues. In D. Mehta and S. Sahni, editors, Handbook of Data Structures and Applications, pages 8:1–8:23. Chapman and Hall / CRC, 2005.
P. van Emde Boas, R. Kaas, and E. Zulstra. Design and implementation of an efficient priority queue. Math. Systems Theory, 10:99–127, 1977.
M. Fredman and R. Tarjan. Fibonacci heaps and their uses in improved network optimization algorithms. J. ACM, 34:596–615, 1987.
J. Stasko and J. Vitter. Pairing heaps: Experiments and analysis. Communications of the ACM, 30(3):234–249, 1987.
G. Gonnet and J. I. Munro. Heaps on heaps. SIAM J. Computing, 15:964–971, 1986.
S. Carlsson and J. Chen. The complexity of heaps. In Proc. Third ACM-SIAM Symp. on Discrete Algorithms, pages 393–402, 1992.
D. Gusfield. Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology. Cambridge University Press, 1997.
M. Crochemore and W. Rytter. Jewels of Stringology. World Scientific, 2003.
S. Puglisi, W. Smyth, and A. Turpin. A taxonomy of suffix array construction algorithms. ACM Computing Surveys, 39, 2007.
K. Schurmann and J. Stoye. An incomplex algorithm for fast suffix array construction. Software: Practice and Experience, 37:309–329, 2007.
M. Nelson. Fast searching with suffix trees. Dr. Dobbs Journal, August 1996.
E. Fredkin. Trie memory. Communications of the ACM, 3:490–499, 1962.
P. Weiner. Linear pattern-matching algorithms. In Proc. 14th IEEE Symp. on Switching and Automata Theory, pages 1–11, 1973.
E. McCreight. A space-economical suffix tree construction algorithm. J. ACM, 23:262–272, 1976.
E. Ukkonen. Constructing suffix trees on-line in linear time. In Intern. Federation of Information Processing (IFIP ’92), pages 484–492, 1992.
U. Manber and G. Myers. Suffix arrays: A new method for on–line string searches. SIAM J. Computing, pages 935–948, 1993.
D Kim, J. Sim, H. Park, and K. Park. Linear-time construction of suffix arrays. In Proc. 14th Symp. Combinatorial Pattern Matching (CPM), pages 186–199, 2003.
P. Ko and S. Aluru. Space-efficient linear time construction of suffix arrays,. In Proc. 14th Symp. on Combinatorial Pattern Matching (CPM), pages 200–210. Springer-Verlag LNCS, 2003.
J. Kärkkäinen, P. Sanders, and S. Burkhardt. Linear work suffix array construction. J. ACM, 2005.
V. Makinen and G. Navarro. Compressed full text indexes. ACM Computing Surveys, 39, 2007.
D. Harel and R. E. Tarjan. Fast algorithms for finding nearest common ancestors. SIAM J. Comput., 13:338–355, 1984.
B. Schieber and U. Vishkin. On finding lowest common ancestors: simplification and parallelization. SIAM J. Comput., 17(6):1253–1262, December 1988.
M. Bender and M. Farach. The LCA problem revisited. In Proc. 4th Latin American Symp. on Theoretical Informatics, pages 88–94. Springer-Verlag LNCS vol. 1776, 2000.
J. Siek, L. Lee, and A. Lumsdaine. The Boost Graph Library: user guide and reference manual. Addison Wesley, Boston, 2002.
S. Skiena and M. Revilla. Programming Challenges: The Programming Contest Training Manual. Springer-Verlag, 2003.
S. Pemmaraju and S. Skiena. Computational Discrete Mathematics: Combinatorics and Graph Theory with Mathematica. Cambridge University Press, New York, 2003.
J. Hopcroft and R. Tarjan. Efficient algorithms for graph manipulation. Communications of the ACM, 16:372–378, 1973.
R. Tarjan. Depth-first search and linear graph algorithms. SIAM J. Computing, 1:146–160, 1972.
T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Introduction to Algorithms. MIT Press, Cambridge MA, second edition, 2001.
A. Aho, J. Hopcroft, and J. Ullman. Data Structures and Algorithms. Addison-Wesley, Reading MA, 1983.
R. Tarjan. Data Structures and Network Algorithms. Society for Industrial and Applied Mathematics, Philadelphia, 1983.
C. Berge. Hypergraphs. North-Holland, Amsterdam, 1989.
S. Näher and O. Zlotowski. Design and implementation of efficient data types for static graphs. In European Symposium on Algorithms (ESA), pages 748–759, 2002.
J. van Leeuwen, editor. Handbook of Theoretical Computer Science: Algorithms and Complexity, volume A. MIT Press, 1990.
D. Eppstein, Z. Galil, G. F. Italiano, and A. Nissenzweig. Sparsification: A technique for speeding up dynamic graph algorithms. In Proc. 33rd IEEE Symp. on Foundations of Computer Science (FOCS), pages 60–69, 1992.
D. Alberts, G. Cattaneo, and G. Italiano. An empirical study of dynamic graph algorithms. In Proc. Seventh ACM-SIAM Symp. Discrete Algorithms (SODA), pages 192–201, 1992.
C. Zaroliagis. Implementations and experimental studies of dynamic graph algorithms. In Experimental algorithmics: from algorithm design to robust and efficient software, pages 229–278. Springer-Verlag LNCS, 2002.
T. Lengauer. Combinatorial Algorithms for Integrated Circuit Layout. Wiley, Chichester, England, 1990.
T. Lengauer. Hierarchical planarity testing algorithms. J. ACM, 36(3):474–509, July 1989.
T. Lengauer and E. Wanke. Efficient solution of connectivity problems on hierarchically defined graphs. SIAM J. Computing, 17:1063–1080, 1988.
T. Lengauer. Efficient algorithms for finding minimum spanning forests of hierarchically defined graphs. J. Algorithms, 8, 1987.
E. Reingold. On the optimality of some set algorithms. J. ACM, 19:649–659, 1972.
R. Raman. Data structures for sets. In D. Mehta and S. Sahni, editors, Handbook of Data Structures and Applications, pages 33:1–33:22. Chapman and Hall / CRC, 2005.
F. Putze, P. Sanders, and J. Singler. Cache-, hash-, and space-efficient bloom filters. In Proc. 6th Workshop on Experimental Algorithms (WEA), LNCS 4525, pages 108–121, 2007.
G. Jacobson. Space-efficient static trees and graphs. In Proc. Symp. Foundations of Computer Science (FOCS), pages 549–554, 1989.
Z. Galil and G. Italiano. Data structures and algorithms for disjoint set union problems. ACM Computing Surveys, 23:319–344, 1991.
R. Tarjan. Efficiency of a good but not linear set union algorithm. J. ACM, 22:215–225, 1975.
R. Tarjan. A class of algorithms which require non-linear time to maintain disjoint sets. J. Computer and System Sciences, 18:110–127, 1979.
M. Sharir and P. Agarwal. Davenport-Schinzel sequences and their geometric applications. Cambridge University Press, New York, 1995.
D. Berque, R. Cecchini, M. Goldberg, and R. Rivenburgh. The SetPlayer system for symbolic computation on power sets. J. Symbolic Computation, 14:645–662, 1992.
H. Samet. Foundations of Multidimensional and Metric Data Structures. Morgan Kaufmann, 2006.
H. Samet. Multidimensional spatial data structures. In D. Mehta and S. Sahni, editors, Handbook of Data Structures and Applications, pages 16:1–16:29. Chapman and Hall / CRC, 2005.
J. Bentley. Multidimensional binary search trees used for associative searching. Communications of the ACM, 18:509–517, 1975.
P. Indyk and J. Matousek. Low-distortion embeddings of finite metric spaces. In J. Goodman and J. O’Rourke, editors, Handbook of Discrete and Computational Geometry. CRC Press, 2004.
E. Bingham and H. Mannila. Random projection in dimensionality reduction: applications to image and text data. In Proc. ACM Conf. Knowledge Discovery and Data Mining (KDD), pages 245–250, 2001.
S. Arya and D. Mount. Approximate nearest neighbor queries in fixed dimensions. In Proc. Fourth ACM-SIAM Symp. Discrete Algorithms (SODA), pages 271–280, 1993.
S. Arya, D. Mount, N. Netanyahu, R. Silverman, and A. Wu. An optimal algorithm for approximate nearest neighbor searching in fixed dimensions. J. ACM, 45:891 – 923, 1998.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2012 Springer-Verlag London Limited
About this chapter
Cite this chapter
Skiena, S.S. (2012). Data Structures. In: The Algorithm Design Manual. Springer, London. https://doi.org/10.1007/978-1-84800-070-4_12
Download citation
DOI: https://doi.org/10.1007/978-1-84800-070-4_12
Publisher Name: Springer, London
Print ISBN: 978-1-84800-069-8
Online ISBN: 978-1-84800-070-4
eBook Packages: Computer ScienceComputer Science (R0)