橘皮纹有哪些影响:我今天才注的册,请问怎么发表帖子,我有一迷宫程序怎么也调试不出来想放到上面大家帮我看看!

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 06:53:47
不知这样行否?
下面是源程序,哭死我了,错误多的吓人,各位全当救我一命吧!

#define m 3
#define n 3
#define MAXSIZE 1000

#include <stdlib.h>
#include <stdio.h>

typedef struct{
int x,y;
int pos;}Datatype;

typedef struct{
Datatype data[MAXSIZE];
int top;
}Seqstack;

typedef struct{
int x_offset;
int y_offset;
}Offset;

Offset move[8]={{0,1},{1,1},{1,0},{1,-1},
{0,-1},{-1,-1},{-1,0},{-1,1}};

Seqstack *s;
int maze[m+2][n+2]={{1,1,1,1,1},
{1,0,1,0,1},
{1,1,0,1,1},
{1,0,1,0,1},
{1,1,1,1,1}};
/*NEXT WHAT WE DO IS TO INITIATE A STACK*/
void Init_Seqstack(Seqstack *s)
{s=(Seqstack*)malloc(sizeof(Seqstack));
s->top=-1;
}

/*PUSH Datatype DATA INTO THE STACK*/
void Push_Seqstack(Seqstack *s,Datatype x)
{s->top++;
s->data[s->top]=x;
}

/* GET THE ABOVE DATA OUT OF STACK SO AS TO GET THE RIGHT TRACK*/

Datatype Pop_Seqstack(Seqstack *s)
{ Datatype x;
x=s->data[s->top];
s->top--;
return x;
}

/*JUDGE THE STACK BE NORMAL OR NOT
IF NORMAL THAT IS TO SAY THE STACK CAN STORM
DATA WE CAN LET IT RETURN 0 ELSE 1*/

int Empty_Seqstack(Seqstack *s)
{if(s->top==-1)
return 1;
else return 0;
}

int main()
{
Seqstack *s;
s=(Seqstack*)malloc(sizeof(Seqstack));
Datatype ru,chu;
int i,j,d;
Init_Seqstack(s);
ru.x=1;
ru.y=1;
ru.pos=-1;

Push_Seqstack(s,ru);
while(!Empty_Seqstack(s))
{ chu=Pop_Seqstack(s);
d=chu.pos+1;
while(d<8)
{i=chu.x+move[d].x_offset;
j=chu.y+move[d].y_offset;
if(maze[i][j]==0) /*NOTE THIS PLACE*/
{ ru={i,j,d};
Push_Seqstack(s,ru);
chu.x=i;
chu.y=j;
if(i==m&&j==n)
{ printf("the track is: %d,%d\n",Pop_Seqstack(s).x,Pop_Seqstack(s).y);
while(!Empty_Seqstack(s))
{ chu=Pop_Seqstack(s);
printf("the track is: %d,%d\n",chu.x,chu.y);
}
}
else {d=0;
maze[i][j]=-1;
}
else
d++;
}
}
就是这些了,我在脑子里面都成功运行100遍可计算机不认这个呀!!

哈哈哈哈,终于通过了输出了正确的结果,问题出在初始化处,应该用指针返回一栈类型.

错误大大的有, 我改了一下, 可以编译通过了.但其他的不知道.
很久没有回答问题, 手也生了.

#define m 3
#define n 3
#define MAXSIZE 1000

#include <stdlib.h>
#include <stdio.h>

typedef struct{
int x;
int y;
int pos;
}Datatype;

typedef struct{
Datatype data[MAXSIZE];
int top;
}Seqstack;

typedef struct{
int x_offset;
int y_offset;
}Offset;

Offset move[8]={{0,1},{1,1},{1,0},{1,-1},
{0,-1},{-1,-1},{-1,0},{-1,1}};

Seqstack *s;
int maze[m+2][n+2]={{1,1,1,1,1},
{1,0,1,0,1},
{1,1,0,1,1},
{1,0,1,0,1},
{1,1,1,1,1}};
/*NEXT WHAT WE DO IS TO INITIATE A STACK*/
void Init_Seqstack(Seqstack *s)
{
s=(Seqstack*)malloc(sizeof(Seqstack));
s->top=-1;
}

/*PUSH Datatype DATA INTO THE STACK*/
void Push_Seqstack(Seqstack *s,Datatype x)
{
s->top++;
s->data[s->top]=x;
}

/* GET THE ABOVE DATA OUT OF STACK SO AS TO GET THE RIGHT TRACK*/

Datatype Pop_Seqstack(Seqstack *s)
{
Datatype x;
x=s->data[s->top];
s->top--;
return x;
}

/*JUDGE THE STACK BE NORMAL OR NOT
IF NORMAL THAT IS TO SAY THE STACK CAN STORM
DATA WE CAN LET IT RETURN 0 ELSE 1*/

int Empty_Seqstack(Seqstack *s)
{
if(s->top==-1)
return 1;
else return 0;
}

int main()
{
Seqstack *s;
s=(Seqstack*)malloc(sizeof(Seqstack));
Datatype ru,chu;
int i,j,d;
Init_Seqstack(s);
ru.x=1;
ru.y=1;
ru.pos=-1;

Push_Seqstack(s,ru);
while(!Empty_Seqstack(s))
{
chu=Pop_Seqstack(s);
d=chu.pos+1;
while(d<8)
{
i=chu.x+move[d].x_offset;
j=chu.y+move[d].y_offset;
if(maze[i][j]==0){ /*NOTE THIS PLACE*/
ru.x = i; ru.y = j; ru.pos = d;/*这里错的最多*/
Push_Seqstack(s,ru);
chu.x=i;
chu.y=j;
if(i==m&&j==n)
{
printf("the track is: %d,%d\n",Pop_Seqstack(s).x,Pop_Seqstack(s).y);
while(!Empty_Seqstack(s))
{
chu=Pop_Seqstack(s);
printf("the track is: %d,%d\n",chu.x,chu.y);
}
}
else{
d=0;
maze[i][j]=-1;
}
/*else*/ d++; *//*这句不要*/
}/*end if maze*/
}/*end while d<8*/
}
return 1;/*加了一句*/
}

void Init_Seqstack(Seqstack *s)
是不要再次分配内存啦!

你定义的Datatype是一个变量
typedef struct{
int x;
int y;
int pos;
}Datatype;
这个是你的结构体,
但是你在main()函数中出现
Datatype ru,chu;
这句话,你说呢,变量来定义变量,能通过吗??
你把它好好改改。
目前就这个结构体有问题,其他好象没有什么问题了啊。我该了2个错误。不过还是不行。

我改过了。但是不知道是不是你的意思,不过现在只有一个错误了。
#define m 3
#define n 3
#define MAXSIZE 1000

#include <stdlib.h>
#include <stdio.h>

typedef struct {
int x;
int y;
int pos;
}Datatype;

typedef struct{
Datatype data[MAXSIZE];
int top;
}Seqstack;

typedef struct{
int x_offset;
int y_offset;
}Offset;

Offset move[8]={{0,1},{1,1},{1,0},{1,-1},
{0,-1},{-1,-1},{-1,0},{-1,1}};

Seqstack *s;
int maze[m+2][n+2]={{1,1,1,1,1},
{1,0,1,0,1},
{1,1,0,1,1},
{1,0,1,0,1},
{1,1,1,1,1}};
/*NEXT WHAT WE DO IS TO INITIATE A STACK*/
void Init_Seqstack(Seqstack *s)
{s=(Seqstack*)malloc(sizeof(Seqstack));
s->top=-1;
}

/*PUSH Datatype DATA INTO THE STACK*/
void Push_Seqstack(Seqstack *s,Datatype x)
{s->top++;
s->data[s->top]=x;
}

/* GET THE ABOVE DATA OUT OF STACK SO AS TO GET THE RIGHT TRACK*/

Datatype Pop_Seqstack(Seqstack *s)
{ Datatype x;
x=s->data[s->top];
s->top--;
return x;
}

/*JUDGE THE STACK BE NORMAL OR NOT
IF NORMAL THAT IS TO SAY THE STACK CAN STORM
DATA WE CAN LET IT RETURN 0 ELSE 1*/

int Empty_Seqstack(Seqstack *s)
{if(s->top==-1)
return 1;
else return 0;
}

void main()
{
int i,j,d;
Datatype ru,chu;
Seqstack *s;
s=(Seqstack*)malloc(sizeof(Seqstack));

Init_Seqstack(s);
ru.x=1;
ru.y=1;
ru.pos=-1;

Push_Seqstack(s,ru);
while(!Empty_Seqstack(s))
{
chu=Pop_Seqstack(s);
d=chu.pos+1;
while(d<8)
{
i=chu.x+move[d].x_offset;
j=chu.y+move[d].y_offset;
if(maze[i][j]==0) /*NOTE THIS PLACE*/
{
ru=(i,j,d);
Push_Seqstack(s,ru);
chu.x=i;
chu.y=j;
if(i==m&&j==n)
{
printf("the track is: %d,%d\n",Pop_Seqstack(s).x,Pop_Seqstack(s).y);
while(!Empty_Seqstack(s))
{
chu=Pop_Seqstack(s);
printf("the track is: %d,%d\n",chu.x,chu.y);
}
}
else
{
d=0;
maze[i][j]=-1;
}
}
else
d++;
}
}
}
这个是代码。
错误在ru=(i,j,d); 这句话。
你的是不是逗号表达式呢??
ru 是一个结构体变量,它有ru.x,ru.y,ru.pos
三个变量,你给ru=(i,j,d);,这个“=”就是错误了。
我改了ru.x=i;ru.y=j;ru.pos=d;
错误是没有了。不过出现了另一个问题,就是无法运行就结束了。说明的程序可能存在问题。