A heap is basically a bunch of pages with no particular structure
(aside from that of a page/extent), no order, no linkage.
If you have a table that has no Clustered Index defined on it,
then the data for that table is stored in a heap.
Heaps are logically a flat structure
(i.e. they are made up of only data pages, no root/intermediate pages).
Given that there is no order, structure, or page linkage in a heap,
there is no direct support in a heap for singleton lookups or range scans.
Source:
http://www.mssqltips.com/sqlservertip/2261/sql-server-fragmentation-storage-basics-and-access-methods-part-1-of-9/