我有一个无法解决的分段错误问题,也许有人可以看看它?更多信息在下面。该程序应该生成一个“完美”的迷宫。
迷宫.cp http://pastebin.com/gYazVk4h
迷宫.h http://pastebin.com/cT4GddgB
主文件
#include "Maze.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <getopt.h> // includes the getopt command for input flags
#include <stdlib.h> // for EXIT_FAILURE and EXIT_SUCCESS
#include <stack>
using namespace std;
int main(int argc, char const *argv[])
{
Maze labyrinth;
labyrinth.Create_maze(15, 40);
labyrinth.Print_maze();
return 0;
}
我也可以粘贴其他两个文件,但我相信将 em 保存在 pastebin 上会更聪明,因为它们很大?
无论如何,我在运行它时遇到分段错误。 注意 1:在第 38 和 39 行,您必须取消注释 while 循环并注释掉 for 循环。我正在使用 for 循环进行调试。
注意 2:我相信问题出在第 119 - 121 行,但我不确定,我尝试了各种方法,但不知道如何解决。
注意 3:我正在遵循 Mazeworks DOT com 的以下伪代码:
create a CellStack (LIFO) to hold a list of cell locations
set TotalCells = number of cells in grid
choose a cell at random and call it CurrentCell
set VisitedCells = 1
while VisitedCells < TotalCells
find all neighbors of CurrentCell with all walls intact
if one or more found
choose one at random
knock down the wall between it and CurrentCell
push CurrentCell location on the CellStack
make the new cell CurrentCell
add 1 to VisitedCells else
pop the most recent cell entry off the CellStack
make it CurrentCell endIf
endWhile