This thesis is concerned with the design of efficient algorithms for listing combinatorial structures. The research described here gives some answers to the following questions: which families of combinatorial structures have fast computer algorithms for listing their members, What general methods are useful for listing combinatorial structures, How can these be applied to those families that are of interest to theoretical computer scientists and combinatorialists? Among those families considered are unlabeled graphs, first-order one properties, Hamiltonian graphs, graphs with cliques of specified order, and k-colorable graphs. Some related work is also included that compares the listing problem with the difficulty of solving the existence problem, the construction problem, the random sampling problem, and the counting problem. In particular, the difficulty of evaluating Polya's cycle polynomial is demonstrated.