Wahl der Datenstruktur VI

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Queens.om
PROCEDURE InitBoard(VAR board: Board; n: BoardSize);
BEGIN
   ASSERT((n > 0) & (n <= maxn));
   board.size := n;
   board.nofqueens := 0;
   board.rows := {};
   board.cols := {};
   board.diags1 := {};
   board.diags2 := {};
END InitBoard;

PROCEDURE AddQueen(VAR board: Board; row, col: Position);
BEGIN
   ASSERT(~Threatened(board, row, col));
   INCL(board.rows, row);
   INCL(board.cols, col);
   INCL(board.diags1, row - col + board.size - 1);
   INCL(board.diags2, row + col);
   board.pos[board.nofqueens].row := row;
   board.pos[board.nofqueens].col := col;
   INC(board.nofqueens);
END AddQueen;

*Auch das Hinzufügen einer Dame geschieht mit einem Aufwand von O(1).
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999