From 6b757a152a4fd1e59472cc2ea154fdf92d3b3e59 Mon Sep 17 00:00:00 2001 From: Drew Stratford Date: Tue, 30 Jul 2019 02:00:55 +1200 Subject: [PATCH] Minesweeper: updated flood_fill to use Queue --- Games/Minesweeper/Field.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Games/Minesweeper/Field.cpp b/Games/Minesweeper/Field.cpp index 7d3c83de52..fd8b7ddc3e 100644 --- a/Games/Minesweeper/Field.cpp +++ b/Games/Minesweeper/Field.cpp @@ -1,6 +1,6 @@ #include "Field.h" #include -#include +#include #include #include #include @@ -293,14 +293,15 @@ void Field::flood_mark(Square& square) void Field::flood_fill(Square& square) { - DoublyLinkedList queue; - queue.append(&square); + Queue queue; + queue.enqueue(&square); - for (auto s : queue) { + while(!queue.is_empty()) { + Square *s = queue.dequeue(); s->for_each_neighbor([this, &queue](Square& neighbor) { if (!neighbor.is_swept && !neighbor.has_mine && neighbor.number == 0) { flood_mark(neighbor); - queue.append(&neighbor); + queue.enqueue(&neighbor); } if (!neighbor.has_mine && neighbor.number) flood_mark(neighbor);