In this work, we consider the numerical simulation of contact problems. Since the numerical realization of contact problems is of high importance in many application areas, there is a strong demand for fast and reliable simulation method. We introduce and analyze a new nonlinear multigrid method for solving contact problems with and without friction. As it turns out, by means of our new method nonlinear contact problems can be solved with a computational amount comparable that of linear problems. In particular, in our numerical experiments we observe our method to be of optimal complexity. Moreover, since we do not use any regularization techniques, the computed discrete boundary stresses as well as the computed displacements turn out to be highly accurate. The new method is based on the succesive minimization of the associated energy functional in direction of properly choosen functions. We show the global convergence of our method and give several numerical examples in two and three space dimensions, illustrating the robustness and the performance of the method. In addition to the theoretical analysis, the method has been implemented in an object oriented way. We explain the concepts of our implementation and show the flexibility of our approach by deriving a nonlinear algebraic multigrid method. To include frictional effects, we use a discrete fixed point iteration. As a faster alternative, also a Gauss-Seidel like iteration scheme is proposed. Both methods are compared in numerical examples. The resulting nonlinear algorithm turns out to be fast and reliable. Finally, we consider the case of contact between elastic bodies. Here, the information transfer at the interface is realized by means of non conforming domain decomposition methods (mortar methods). This gives rise to a non-linear Dirichlet Neumann Algorithm.