迷宮問題-非再帰アルゴリズム

2052 ワード

1.順次スタックヘッダファイル
# include
using namespace std;
struct items{
	int x,y;
	char* dir;
};
class SeqStack{        //    
private:
	int maxSize;          //            
	int top;            //    :       ,          
	items* elements;         //   
public:
	SeqStack(int sz=50);  //    :         sz     
	~SeqStack(){delete[] elements;}     //    :          
	void Push(const items& x);     //    :   x    
	bool Pop(items& x);           //    :         x,          ;
	bool isEmpety(){return (top==-1)?true:false;} //    
	bool isFull(){ return (top+1==maxSize)?true:false;} //    
	friend ostream& operator<

2.順次スタックソースファイル
# include
# include
# include"SeqStack.h"
using namespace std;
SeqStack::SeqStack(int sz):top(-1),maxSize(sz){     //    :top=-1    
	elements=new items[maxSize];       
	assert(elements!=NULL);  //assrt  :    ()            
}
void SeqStack::Push(const items& x){     //
	elements[++top]=x;
}
bool SeqStack::Pop(items& x){          //    
	if(isEmpety()) return false;
	x=elements[top--];
    return true;
}
ostream& operator<

3.迷宮関数と主関数を歩く:
# include
# include"SeqStack.h"
void Path(int x,int y,items move[8],int Maze[][4],int mark[][4]);
using namespace std;
const int m=2,p=2;
void main(){
	int i,j;
	int Maze[m+2][p+2];  //      
	int mark[m+2][p+2];  //      
	items move[8]={{-1,0,"N"},{-1,1,"NE"},{0,1,"E"},{1,1,"SE"},
	{1,0,"S"},{1,-1,"SW"},{0,-1,"W"},{-1,-1,"NW"}}; //      
	for(i=0;i>Maze[i][j];//      :0,1  ,     0,       1;
	for(i=0;i