Esta obra tem como objetivo fornecer uma competência sólida no desenvolvimento de programas de média e elevada complexidade e um conhecimento profundo sobre estruturas de dados avançadas e algoritmos complexos, usando a linguagem de programação C e aplicando o paradigma da programação modular. Assim, utiliza uma metodologia que dá particular ênfase à decomposição funcional das soluções, através da implementação de tipos de dados abstratos. Inclui exemplos, exercícios, programas e leituras recomendadas, com vista a facilitar a aprendizagem dos alunos. Para atingir este objetivo, o livro está organizado em cinco grandes temas: Estudo do paradigma da programação modular na linguagem C, apresentando os aspetos fundamentais para implementar tipos de dados abstratos aplicando a metodologia de programação defensiva; Estudo das principais estruturas de dados dinâmicas; Estudo das principais classes de algoritmos; Estudo da implementação dos diferentes tipos de memórias; Estudo do tipo de dados abstrato grafo/dígrafo e seus algoritmos mais importantes. Nesta nova edição foram acrescentadas secções sobre Árvore Rubinegra, Árvore Autoequilibrada, Caminhos e circuitos hamiltonianos, Circuitos e caminhos eulerianos. Este livro disponibiliza ainda a correspondência dos principais termos técnicos para o português do Brasil.