You are on page 1of 137
ammde ALGORITMOS E ESTRUTURAS DE DADOS Niklaus Wirth ETH Zitrich Tradutora Cheng Mei Lee Bacharel em Esuattstica — IME — USP Bacharel em Citncias Econdmicas — FEA — USP Revisor Técnico Joao José Neto Engenheiro Elericisa — POLI— USP ‘Mestre em Engenharia Elérica — POLI — USP Doutor em Engenharia Elétice — POLI — USP Professor Assstente-Dowor da Escola Politécnica da USP Oc Algorithms and Data Structures Original English langage edition published by Copyright © 1986 by Prentice-Hall, Inc All Rights Reserved Direitos exclusives para a lingua portuguese Copyright © 1989 Copyright da reimpressto © 1999 by LIC — Livros Tee Travessa do Ouvidor, 11 Rio de Janeiro, RJ — CEP 2080-040 Tel: 21-21-9621 ax: 21-221-3202 Reservados todos os direitos. & proibida a duplicagio 10 reproducao deste volume, no tod0 ou em parte, Sb quainguer formas ou por quaisgucr meios (eletrnico, mecanico, gavage, (oe6pia, distibuigdo na Web ou outro»), sem permission express da Fait, PREFACIO Esta nova edigdo incorpora muitas revises de detalhes ¢ diversas alteragdes, de natureza mais.substancial. Todas estas modificagdes foram motivadas pela expe- riencia adquirida nos 10 anos de existéncia e utilizagao do texto da primeira edigao, O estilo bem como a maior parte do contesido do texto foram, entretanto, mantidos. Apzesentamos, a seguir, um resumo das alteragdes mais significativas. ‘A maior modificacdo, que se estende ao longo de todo 0 texto, refere-se & lingu gem de programagio utilizada para a apresentagio dos algoritmos. Pascal foi substituida pela linguagem Modula-2. Embora tal alteragao nio seja significativa quanto a repre- Sentagio dos algoritmos, sua escolha ¢ justificada pela presenca de estruturas sintéticas mais simples e elegantes na linguagem Modula-2, as quais permitem que a estrutura de um algoritmo seja apresentada de modo mais claro e compreensivel. Adicional- mente, pareceu-nos aconselhével langar mio de uma notagdo que, dia a dia, conquista mais adeptos devido & sua adequaggo para uso no desenvolvimento de sistemas de pprogramagao de grande porte. Contudo, o fato de ser a linguagem Pascal a antecessora ‘la linguagem Modula-2 torna simples € natural a transi¢do daquela para esta. Para {acilitaro neompanhamento do texto, 6 aprecentado, no apéndica,a titulo dereferéncia, lum sumario da linguagem Modula-2. Como consequéncia direta dessa alteragéo da linguagem de programagio, foi ‘irio reformular totalmente a Seco 1.11, que trata do assunto das estruturas de arquivos seqiienciais. A linguagem Modula-2 nao oferece ao programador 0 recurso dda uilizagéo de arquivos na forma de tipos de dados inerentes a hinguagem. A Sedo 1.11, revisada, apresenta 0 conceito de seqiéncia como sendo uma estrutura de dados ais geral. Introduz sinda um conjunto de médulos de programa que incorporam o conceito de sequéncia, especificamente na linguagem Modula-2. ‘A tiltima parte do Cap. 1 € nova. Dedica-se 20 assunto das buscas e, partindo ddastbuseas linear e bindria, chega até aapresentacdo de alguns algoritmos, recentemente criados, de buscas répidas em cadeias de caracteres. Nesta segao, em particular, sé utilizados os conceitos de assergces e de invariantes de iteragoes, com a finalidade de desenvolver demonstragées da corregio dos algoritmos apresentados. Uma nova secdo, dedicada as drvores de busca com prioridade, complementa » capitulo sobre estruturas de dados dindmicas. Também esse tipo de arvores era deseonhecido na época do langamento da primeira edigio. Elas servem, particular- ‘mente, & representacao econdmica de conjuntos de pontos em um plano, bem como \ localizagio répida dos mesmos.

You might also like