帮我改个程序50分,有关迷宫的程序
//main.cpp
#include<iostream>
#include<cstdlib>
#include<stack>
#include"elemType.h"
using namespace std;
bool mazeFun()
{
SElemType curElem = Maze::start;
static stack<SElemType> ss;
do{
curElem.setSelected();//±êÖ¾£¬ÒѾ±»Ñ¡ÖÐ
if(curElem.isOK())//µ±Ç°µã¿ÉͨÇҴ˵ã´æÔÚ
{
ss.push(curElem);
if(curElem == Maze::end) return true;
else
curElem = curElem.next();//¶«ÁÚµã
}
else
{
if(!ss.empty()&&ss.top().isOK())
curElem = ss.top().next();
else
if(!ss.empty()&&!ss.top().isOK())
{
ss.pop();
if(!ss.empty())
curElem = ss.top();
}
}
}while(!ss.empty());
return false;
}
int main()
{
cout<<"ÕâÊÇÒ»¸öÑ°ÇóÃÔ¹¬³ö·µÄ³ÌÐò"<<endl;
cout<<"ÇëÊäÈëÄãµÄÃÔ¹¬´óС"<<endl;
int nn;
cin>>nn;
Maze::setMaze(nn);
if(mazeFun())
{
while(!ss.empty())
{
cout<<"("<<ss.top().seat.x<<","<<ss.top().seat.y<<")"<<endl;
ss.pop();
}
}
system("pause");
return 0;
}
///////////////////////////////////////////////////////////
//elemType.h
typedef int hor;
typedef int ver;
typedef struct _PosType{
hor x;
ver y;
}PosType;
class SElemType{
bool isSelected;//ÊÇ·ñ±»Ñ¡¹ý
public:
SElemType(int xx, int yy);
bool isOK();
void setSelected(){isSelected = true;}
bool operator==(SElemType ss);
SElemType operator= (SElemType ss);
SElemType next();
PosType seat;//×ø±êλÖÃ
};
class Maze{
public:
static SElemType start;
static SElemType end;
void static setMaze(int mm)
{
SElemType start(0,0);
SElemType end(mm,mm);
}
};
//////////////////////////////////////////////
//elemType.cpp
#include"elemType.h"
SElemType::SElemType(int xx, int yy)
{
seat.x = xx;
seat.y = yy;
isSelected = false;
}
bool SElemType::operator==(SElemType ss)
{
if(ss.seat.x==seat.x&&ss.seat.y==seat.y)
return true;
else return false;
}
SElemType SElemType::operator= (SElemType ss)
{
//ÂÔÈ¥¼ì²â×ÔÎÒ¸´ÖÆ
seat.x = ss.seat.x;
seat.y = ss.seat.y;
isSelected = ss.isSelected;
return *this;
}
SElemType SElemType::next()
{
SElemType temp(seat.x+1,seat.y);
if(!temp.isSelected) return temp;
else
{
SElemType temp(seat.x,seat.y+1);
if(!temp.isSelected) return temp;
else
{
SElemType temp(seat.x-1,seat.y);
if(!temp.isSelected) return temp;
else
{
SElemType temp(seat.x,seat.y-1);
return temp;
}
}
}
}
bool SElemType::isOK()
{
int a = seat.x;
if(((seat.x)>(Maze::end.seat.x))||seat.y>Maze::end.seat.y)
return false;
else
return next().isOK();
}
这是个有关迷宫的程序,我把一个迷宫图定义为一个类,有起始位置,结束位置,
而每个位置也定义为一个类,所在的坐标位置和是否被选过。
第一:程序能编译,但是不能连接,这为什么?
第二:这个程序在设计类上,或者选用数据结构上有什么漏洞吗?