求大师改改错...急等..谢谢
#define TIMEMAX 6000
#define OK 0
#define ERROR -1
#define UP 1
#define DOWN 2
#define LEFT 3
#define RIGHT 4
struct SNode{
int data;
struct SNode * next;
};
class Stack
{
private :
SNode * top;
public :
Stack();
int totallength;
int length;
int push(int e);
int pop();
int isempty();
};
Stack::Stack()
{
top=NULL;
length=0;
totallength=0;
}
int Stack::push(int e)
{
SNode *p;
p= (SNode *) malloc(sizeof(SNode));
if(!p)
return ERROR;
p->data=e;
p->next=top;
top=p;
length++;
totallength++;
return OK;
}
int Stack::pop()
{
int e;
SNode *p;
if(top==NULL)
return ERROR;
e=top->data;
p=top;
top=p->next;
length--;
totallength++;
delete p;
return e;
}
int Stack::isempty()
{
if(top==NULL)
return OK;
return ERROR;
}
//主文件
#include <iostream.h>
#include <process.h>
#include <time.h>
#include "laoshu.h"
char arr[18][70];
void ShowMaze()
{
int i,j;
system("cls.exe");
for(i=0;i<18;i++)
{
for(j=0;j<70;j++)
cout<<arr[i][j];
cout<<endl;
}
cout<<"*表示墙 ^表示老鼠 空格表示路 +表示有用的路 =表示无用的路"<<endl;
}
void InitMaze()
{
int i,j,n;
for(i=0;i<18;i++)
for(j=0;j<70;j++)
arr[i][j]='*';
srand((unsigned)time(NULL));
for(i=1;i<17;i++)
for(j=1;j<69;j++)
{
n=rand()%25;
if(n<17)
arr[i][j]=' ';
}
arr[1][0]=' ';
arr[1][1]=' ';
arr[1][2]=' ';
arr[1][3]=' ';
arr[16][66]=' ';
arr[16][67]=' ';
arr[16][68]=' ';
arr[16][69]=' ';
}
void main()
{
int i,j,path,speed=0;
long timei,timej;
Stack s;
InitMaze();
i=1;
j=0;
arr[i][j]='^';
ShowMaze();
cout<<"选择速度:1快,2慢"<<endl;
while(speed!=1 && speed!=2)
cin>>speed;
while(i>=0 && i<18 &&j>=0 && j<70)
{
ShowMaze();
if(speed==2)
for(timei=0;timei<TIMEMAX;timei++)
for(timej=0;timej<TIMEMAX;timej++);
if(i==16 && j==69)
{
cout<<"老鼠出来了";
cout<<"老鼠总共跑了:"<<s.totallength<<"步";
cout<<"有用的步数:"<<s.length<<endl;
exit(1);
};
if(arr[i][j]==' ')
{
arr[i][j]='+';
j=j+i;
arr[i][j]='^';
s.push(RIGHT);
continue ;
};
if(arr[i+1][j]==' ')
{
arr[i][j]='+';
i=i+1;
arr[i][j]='^';
s.push(DOWN);
continue;
};
if(arr[i-1][j]==' ')
{
arr[i][j]='+';
i=i-1;
arr[i][j]='^';
s.push(UP);
continue ;
};
if(arr[i][j-1]==' ')
{
arr[i][j]='+';
i=i-1;
arr[i][j]='^';
s.push(UP);
continue ;
};
if(arr[i][j-1]==' ')
{
arr[i][j]='+';
j=j-1;
arr[i][j]='^';
s.push(LEFT);
continue;
};
if(s.isempty()==OK)
{
cout<<"没有出路"<<endl;
exit(1);
};
path=s.pop();
switch(path)
{
case LEFT:
arr[i][j]='=';
j=j+1;
arr[i][j]='^';
break;
case UP:
arr[i][j]='=';
i=i+1;
arr[i][j]='^';
break;
case DOWN:
arr[i][j]='=';
i=i-1;
arr[i][j]='^';
break;
case RIGHT:
arr[i][j]='=';
j=j-1;
arr[i][j]='^';
break;
}
};
}
错误:Compiling...
laoshu.cpp
f:\vc++ 实效编程\迷宫\laoshu.h(33) : error C2065: 'malloc' : undeclared identifier
f:\vc++ 实效编程\迷宫\laoshu.cpp(24) : error C2065: 'srand' : undeclared identifier
f:\vc++ 实效编程\迷宫\laoshu.cpp(28) : error C2065: 'rand' : undeclared identifier
执行 cl.exe 时出错.
laoshu.obj - 1 error(s), 0 warning(s)
[解决办法]
#include <stdlib.h>
[解决办法]
楼上正解。
[解决办法]
加上#include<iostream>
using namespace std;