1. A method executed by a computer under the control of a program, said computer including a memory for storing said program, said method comprising the steps of: (1) receiving in said computer a list of cells representing a circuit layout, each cell having a specified type; (2) storing in said memory a cell record in a cell table for each received cell, each said cell record including a boundary pointer pointing to a boundary record in a boundary table, each boundary record including an adjacent cell pointer, an edge pointer and a next entry pointer for the next record in the boundary table, the adjacent cell pointer pointing to a cell adjacent to the cell for the current boundary record, if any, and the edge pointer pointing to an edge record in an edge table; (3) selecting a cell as the current cell; (4) selecting an edge of the current cell as the current edge; (5) generating a division line along the current edge; (6) subdividing any edges stored in the data structure that are intersected by the generated division line into smaller edges, and generating and storing one said edge record for each of the smaller edges; (7) repeating steps 4-6 until each edge of the current cell has been processed by said steps 4-6; (8) repeating steps 3-7 until each cell has been processed by said steps 3-7; and (9) storing in each edge record a first endpoint entry and a second endpoint entry, the first endpoint entry including a pointer to a point record in a point table, each point record including entries representing coordinates of the point represented by the point record.