As Moin suggested a Structure works very well for this. I would add that you can also define different Entry Types for the different levels and/or page types (i.e. section landing page vs. entry page vs contact page) and test for entry.type
in your template.
{% extends "_layout" %}
{# switch content based on Entry Type #}
{% switch entry.type %}
{% case 'landing %}
{# my landing page content or template include #}
{% case 'entry' %}
{# my entry page content or template include #}
{% case 'contact' %}
{# my contact page content or template include #}
{% endif %}
Or, if you don't want or need an actual landing page you can create 'pretend' empty entries (i.e. entries with title and slug only) for the sole purpose of generating the navigation and uri segments that your looking for. If someone clicks a link to one of the these 'empty' pages (or accesses the url directly) you can simply redirect them to the next entry in the hierarchy that actually has content.
{% extends "_layout" %}
{# if no body content and has descendants (i.e. no landing page)
# redirect to first descendant with content defined #}
{% if not entry.body is defined or entry.body == "" %}
{% set decendants = entry.descendants %}
{% if decendants|length %}
{% redirect decendants.first().url %}
{% endif %}
{% endif %}
{% block content %}
{{ entry.title }}
{{ entry.body }}
{% endblock %}
If you don't want to trust 'body' being empty, you could also more explicitly define an entry type that had no fields other than title, called 'pretendSection' for example, and test for that entry type, and redirect as above.