标题:关于新类型的定义,为什么不能用?(亟待中)
只看楼主
Soulink
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-7-14
 问题点数:0 回复次数:1 
关于新类型的定义,为什么不能用?(亟待中)

解压包里是代码:(建的工程)
但总是说postype类型,无法使用。
下面是写在一起的东西:大家帮忙看看!真的谢谢,我做的是个迷宫。据我看来这是一些结构定义以及类型使用方面的问题。大家下载后在自己的机子上跑跑,看能不能帮我把问题解决,这是我们数据结构课程设计的东西,明天要交文档,今天一定要把程序跳出来,当由于学C不久,所以有些问题一时也解决不了啊,多多指教了。

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

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

typedef struct
{

int x;

int y;

int value; //value的值被赋予1,0以表示墙还是路

}postype;


typedef struct
{

int ord;

postype seat;

int direct; //分别以1,2,3,4代表下一步的走向


}mazemap;

//堆栈中用到的数据类型,相当于是(即:mazemap的类型)


typedef struct
{

mazemap *base;

mazemap *top;

int stacksize;

}mapstack;

//整个地图要用到的堆栈


void initstack (mapstack S)
{

S.base=(mazemap*)malloc(STACK_INIT_SIZE*sizeof(mazemap));

if(!S.base)
{
exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}

}


int pop (mapstack S,mazemap e)
{

if(S.top==S.base)
{
return ERROR;
}

e=*--S.top;
return OK;

}

int push (mapstack S,mazemap e)
{

if(S.top-S.base>=S.stacksize)
{
S.base=(mazemap*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(mazemap));
if(!S.base)
{
exit(OVERFLOW);
}
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}

*S.top++=e;
return OK;

}


int StackEmpty (mapstack S)
{
if(S.base==S.top)
{
return 1;
}

else
{
return 0;
}

}

void ini_path (postype *path_point)
{

int i,j,k=0;

int total_image[10][10]=
{
1,1,1,1,1,1,1,1,1,1,
1,0,0,1,0,0,0,1,0,1,
1,0,0,1,0,0,0,1,0,1,
1,0,0,0,0,1,1,0,1,1,
1,0,1,1,1,0,0,1,0,1,
1,0,0,0,1,0,0,0,0,1,
1,0,1,0,0,0,1,0,1,1,
1,0,1,1,1,1,0,0,1,1,
1,1,1,0,0,0,1,0,1,1,
1,1,1,1,1,1,1,1,1,1
};

for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
(path_point+k)->x=i;
(path_point+k)->y=j;
(path_point+k)->value=total_image[i][j];
k++;
}
}

}
//The foudation of the map by 1/0

void pass (postype map_node)
{

int n=0;
static int m=0;

if(!map_node.value)
{
for(n=0;n<m;n++)
{
if(map_node==path_save[n])
{
break;
}
}
}

if(n==m)
{
path_save[m]=map_node;
m++;
}
}


nextpos (postype *cursor, int i)
{

switch(i)
{

case '1': cursor->x=cursor->x+1;
cursor->value=block_path[cursor->x+10*cursor->y+1].value;
break;

case '2': cursor->y=cursor->y-1;
cursor->value=block_path[cursor->x+10*cursor->y+10].value;
break;

case '3': cursor->cursor->x-1;
cursor->value=block_path[cursor->x+10*cursor->y-1].value;
break;

case '4': cursor->y=cursor->y+1;
cursor->value=block_path[cursor->x+10*cursor->y-10].value;
break;

}

}

int main (void)
{

int curstep=1;
mazemap temp;
mapstack MAP;
postype curpos,START,END;
postype block_path[100];
postype path_save[100];

inistack(MAP);
ini_path(block_path);

START=block_path[11]; //入口
END=block_path[88]; //出口

curpos=START;
curstep=1;

do
{
if(pass(curpos))
{
temp.ord=curstep;
temp.seat=curpos;
temp.direct=1;

push(MAP,temp);

if(curpos.x==END.x&&curpos.y==END.y&&curpos.value==END.value)
{
return (TRUE);
}

nextpos(curpos,1);
curstep++;
}
else
{
if(!stackempty(MAP))
{
pop(MAP,temp);

while(temp.direct==4&&!stackempty(MAP))
{
pop(MAP,temp);
}

if(temp.direct<4)
{
temp.direct++;
push(MAP,temp);
nextpos(temp.seat,temp.direct);
}
}
}
}while (!stackempty(MAP));

return 0;
}


[attach]29152[/attach](工程文件下载)



Bhb43XaN.rar (2.07 KB) 关于新类型的定义,为什么不能用?(亟待中)

搜索更多相关主题的帖子: 定义 类型 亟待 left align 
2007-10-17 20:25
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
得分:0 

这个程序不是简单的类型没定义的错误,把类型定义放在*.h中,然后在*.c中包含进来就可以。程序还有其他的错误。

2007-10-18 07:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-178511-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.129019 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved