Graphing file dependencies using cinclude2dot.
Note: using my hacked cinclude2dot, which colors headers differently and doesn't recurse.
cinclude2dot --quotetypes quote *.cc *.h > source.dot dot -Tps source.dot > source.ps

It may not look like much. I bet there are actually more edges in this graph than in the first one. That's because many recursive dependencies have been replaced by direct dependencies. You can see that Graphviz has chosen to arrange the files in six tiers rather than ten.

Here's a summary of changes in dependencies. They were created with the dep-compare.py script in the /nmap-exp/david/nmap-dependency branch.
FingerPrintResults.o 43 14 +0 -29
MACLookup.o 42 10 +0 -32
NmapOps.o 42 14 +0 -28
NmapOutputTable.o 42 10 +0 -32
Target.o 43 33 +0 -10
TargetGroup.o 42 14 +0 -28
charpool.o 41 7 +0 -34
idle_scan.o 45 36 +0 -9
main.o 45 14 +0 -31
nmap.o 50 49 +0 -1
nmap_dns.o 45 37 +0 -8
nmap_error.o 42 13 +0 -29
nmap_rpc.o 42 36 +0 -6
nmap_tty.o 43 13 +0 -30
nse_auxiliar.o 42 8 +0 -34
nse_bitlib.o 2 2 +0 +0
nse_debug.o 2 2 +0 +0
nse_init.o 48 19 +0 -29
nse_main.o 50 40 +0 -10
nse_nmaplib.o 47 38 +0 -9
nse_nsock.o 48 18 +0 -30
nse_pcrelib.o 8 8 +0 +0
nse_string.o 6 6 +0 +0
osscan.o 44 37 +0 -7
osscan2.o 44 36 +0 -8
output.o 45 38 +0 -7
portlist.o 42 32 +0 -10
protocols.o 42 17 +0 -25
reason.o 42 31 +0 -11
scan_engine.o 44 37 +0 -7
service_scan.o 44 38 +0 -6
services.o 42 16 +0 -26
targets.o 46 39 +0 -7
tcpip.o 42 33 +0 -9
timing.o 42 15 +0 -27
traceroute.o 48 40 +0 -8
utils.o 42 14 +0 -28
1469 864 +0 -605
FingerPrintResults.h +0 -16
Target.h +0 -17
TargetGroup.h +0 -30
charpool.h +0 -26
global_structures.h +0 -1
idle_scan.h +0 -1
libdnet-stripped/include/dnet.h +0 -16
libdnet-stripped/include/dnet/addr.h +0 -16
libdnet-stripped/include/dnet/arp.h +0 -16
libdnet-stripped/include/dnet/blob.h +0 -16
libdnet-stripped/include/dnet/eth.h +0 -16
libdnet-stripped/include/dnet/fw.h +0 -16
libdnet-stripped/include/dnet/icmp.h +0 -16
libdnet-stripped/include/dnet/intf.h +0 -16
libdnet-stripped/include/dnet/ip.h +0 -16
libdnet-stripped/include/dnet/ip6.h +0 -16
libdnet-stripped/include/dnet/os.h +0 -16
libdnet-stripped/include/dnet/rand.h +0 -16
libdnet-stripped/include/dnet/route.h +0 -16
libdnet-stripped/include/dnet/tcp.h +0 -16
libdnet-stripped/include/dnet/tun.h +0 -16
libdnet-stripped/include/dnet/udp.h +0 -16
libpcre/pcre.h +0 -31
nmap.h +0 -1
nmap_error.h +0 -4
nmap_rpc.h +0 -28
nse_main.h +0 -4
osscan.h +0 -6
output.h +0 -4
portlist.h +0 -4
protocols.h +0 -29
reason.h +0 -4
scan_engine.h +0 -2
service_scan.h +0 -31
services.h +0 -29
targets.h +0 -31
tcpip.h +0 -16
timing.h +0 -21
utils.h +0 -13