page137.cpp

来自「数据结构各种算法的实现」· C++ 代码 · 共 66 行

CPP
66
字号
struct Intersection{
  int left;
  int forward;
  int right;
  };

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
class Maze{
  private:
    int MazeSize;
    int Exit;
    Intersection * intsec;
  public:
    Maze(char * filename);
    int TraverseMaze(int CurrentPos=1);
  };

  Maze::Maze(char * filename){
    ifstream fin;
    fin.open(filename,ios::in|ios::nocreate);
    if(!fin){
      cerr<<"The Maze data file "<<filename<<" cannot be opened!"<<endl;
      exit(1);
      }
    fin>>MazeSize;
    intsec=new Intersection[MazeSize+1];
    for(int i=1;i<=MazeSize;i++)
      fin>>intsec[i].left>>intsec[i].forward>>intsec[i].right;
      fin>>Exit;
      fin.close();
      }

  int Maze::TraverseMaze(int CurrentPos){
    if(CurrentPos>0){
      if(CurrentPos==Exit){
	cout<<CurrentPos<<"  ";
	return 1;
	}
	else if(TraverseMaze(intsec[CurrentPos].left)){
	  cout<<CurrentPos<<"  ";
	  return 1;
	  }
	  else if(TraverseMaze(intsec[CurrentPos].forward)){
	    cout<<CurrentPos<<"  ";
	    return 1;
	    }
	    else if(TraverseMaze(intsec[CurrentPos].right)){
	      cout<<CurrentPos<<"  ";
	      return 1;
	      }
      }
    return 0;
  }



void main(){
  int i;
  char * filename="D:\\Borlandc\\Bin\\Maze.txt";
  Maze maze(filename);
  i=maze.TraverseMaze();
  cout<<endl;
  if(!i)cout<<"There isn't any way to the entrance!"<<endl;
  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?