数据结构 迷宫问题-错误 27 error C2449: 在文件范围内找到“{”(是否缺少函数头?)

问题描述

错误 27 error C2449: 在文件范围内找到“{”(是否缺少函数头?)
#include
#include

#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREAMENT 10 //存储空间分配增量
#define num 10

typedef int MazeType[num][num];
int curstep; //定前当前足迹
MazeType m = {0000000000

typedef struct{
int ord; //通道块在路径上的序号
PosType seat; //通道块在迷宫中的“坐标位置”
int di; //从此通道块走向下一通道块的“方向”。1表示向右,2表示向上,3表示向左,4表示向下。
}SElemType; //栈的元素类型

typedef struct{
SElemType *base; //栈底指针,在栈构造之前和销毁之后为NULL
SElemType *top; //栈顶指针
int stacksize; //当前已分配的存储空间,以元素为单位
}SqStack;

int InitStack(SqStack *S){
(*S).base = (SElemType *) malloc (STACK_INIT_SIZE * (sizeof(SElemType)));
if(!(*S).base) exit(0);
(*S).top = (*S).base;
(*S).stacksize = STACK_INIT_SIZE;
return 1;
}

int Push(SqStack *S SElemType e){
if((*S).top-(*S).base >= (*S).stacksize){
(*S).base = (SElemType *) realloc ((*S).base ((*S).stacksize + STACKINCREAMENT) * sizeof(SElemType));
if(!(*S).base) exit(0);
(*S).top = (*S).base + (*S).stacksize;
(*S).stacksize += STACKINCREAMENT;
}
*((*S).top) = e;
(*S).top ++;
return 1;
}

int Pop(SqStack S SElemType e){ //删除S的栈顶元素并用e返回其值
if((*S).top == (*S).base) exit(0);
(*S).top --;
*e = *(*S).top;
return 1;
}

bool StackEmpty(SqStack S){
if(S.top == S.base) return true;
return false;
}

typedef struct{ //通道块在迷宫中的位置横纵坐标
int x;

int y;
}PosType;

int Pass(PosType curpos){ //判断该位置是否可通过.若为1则可通过,若为0则此通道块为墙,若为-1则此通道块曾被纳入过路径但不通,
if ( m[curpos.x][curpos.y] == 1 ) return 1; //若为其余整数说明此通道块已在当前路径上。
else return 0;
}

void FootPrint(PosType curpos){ //留下足迹
m[curpos.x][curpos.y] = curstep;
}

PosType NextPos(PosType curpos int n){ //下一位置
switch(n)
{
case 0: //当前位置的右通路块
curpos.x += 0;
curpos.y += 1;
case 1: //当前位置的上通路块
curpos.x -= 1;
curpos.y += 0;
case 2: //当前位置的左通路块
curpos.x += 0;
curpos.y -= 1;
case 3: //当前位置的下通路块
curpos.x += 1;
curpos.y += 0;
}
return curpos;
}

void MarkPrint(PosType curpos){ //留下不能通过的标记
m[curpos.x][curpos.y] = -1;
}

void PrintMaze(MazeType maze){ //打印迷宫
for(int i = 0; i < num; i++){
for(int j = 0; j < num; j++){
printf(""%d""maze[i][j]);
}
printf(""n"");
}
}

bool MazePath(MazeType maze PosType start PosType end){ //求迷宫中是否有从start到end的路径
PosType curpos;
SqStack S;
SElemType e;
InitStack(&S);
curpos = start; //起点为当前位置
curstep = 1; //路径中的第一步
do{
if( Pass(curpos) ){ //当前位置可通过
maze[curpos.x][curpos.y] = curstep; //在迷宫中标记出足迹
e.ord = curstep;
e.seat.x = curpos.x;
e.seat.y = curpos.y;
e.di = 0;
Push(&S e); //加入路径中
if(curpos.x == end.x && curpos.y == end.y ) return true; //到达终点
curstep ++; //探索下一步
curpos = NextPos(curpos 0); //下一位置在当前位置的右侧
}
else{
Pop(&S &e);

curstep--; //路径上减少一个点
while(e.di == 3 && !StackEmpty(S)){ //该位置不通,留下不能通过的标记,并退回一步
MarkPrint(e.seat);
Pop(&S &e);
curstep--;
}
if(e.di < 3){ //换下一个方向探索
e.di ++;
Push(&Se);
curpos = NextPos(e.seate.di); //设定当前位置是该新方向上的相邻块
curstep ++;
}
}
}while(!StackEmpty(S));
return false;
}

void main(){
void PrintMaze(MazeType maze);
bool MazePath(MazeType maze PosType start PosType end);

PosType start = {11};PosType end = {num-1num-1};printf(""迷宫的结构如下:"");PrintMaze(m);if( MazePath(mstartend) ){    printf(""n从迷宫的入口到出口的路径如下:"");    PrintMaze(m);}else printf(""此迷宫没有从入口到出口的路径。"");

}

错误提示有60多个... 不知道错在哪.. 求助!!

粘几个错误如下:
错误 33 error C2449: 在文件范围内找到“{”(是否缺少函数头?) e:文件文件数据结构程序迷宫问题2迷宫问题2maze.c 70 1 迷宫问题2
错误 45 error C2449: 在文件范围内找到“{”(是否缺少函数头?) e:文件文件数据结构程序迷宫问题2迷宫问题2maze.c 98 1 迷宫问题2
错误 55 error C2146: 语法错误: 缺少“;”(在标识符“start”的前面) e:文件文件数据结构程序迷宫问题2迷宫问题2maze.c 153 1 迷宫问题2
错误 51 error C2146: 语法错误: 缺少“;”(在标识符“MazePath”的前面) e:文件文件数据结构程序迷宫问题2迷宫问题2maze.c 151 1 迷宫问题2
错误 58 error C2146: 语法错误: 缺少“;”(在标识符“end”的前面) e:文件文件数据结构程序迷宫问题2迷宫问题2maze.c 154 1 迷宫问题2

解决方案

 #include<stdio.h>#include<stdlib.h>#define STACK_INIT_SIZE 100   //存储空间初始分配量#define STACKINCREAMENT 10     //存储空间分配增量#define num  10typedef int MazeType[num][num];int curstep;  //定前当前足迹MazeType m =  {{0000000000}               {0110111010}               {0110111010}               {0111100110}               {0100011110}               {0111011110}               {0101110110}               {0100010010}               {0011111110}               {0000000000}};  //定义了一个全局变量,10*10的迷宫typedef struct{   //通道块在迷宫中的位置横纵坐标    int x;      int y;}PosType;typedef struct{    int ord;          //通道块在路径上的序号    PosType seat;     //通道块在迷宫中的“坐标位置”    int di;           //从此通道块走向下一通道块的“方向”。1表示向右,2表示向上,3表示向左,4表示向下。}SElemType;           //栈的元素类型typedef struct{    SElemType *base; //栈底指针,在栈构造之前和销毁之后为NULL    SElemType *top;  //栈顶指针    int stacksize;   //当前已分配的存储空间,以元素为单位}SqStack;int InitStack(SqStack *S){    (*S).base = (SElemType *) malloc (STACK_INIT_SIZE * (sizeof(SElemType)));    if(!(*S).base) exit(0);    (*S).top = (*S).base;    (*S).stacksize = STACK_INIT_SIZE;    return 1;}int Push(SqStack *S SElemType e){    if((*S).top-(*S).base >= (*S).stacksize){        (*S).base = (SElemType *) realloc ((*S).base ((*S).stacksize + STACKINCREAMENT) * sizeof(SElemType));        if(!(*S).base) exit(0);        (*S).top = (*S).base + (*S).stacksize;        (*S).stacksize += STACKINCREAMENT;    }    *((*S).top) = e;    (*S).top ++;    return 1;}int Pop(SqStack *S SElemType* e){   //删除S的栈顶元素并用e返回其值    if((*S).top == (*S).base) exit(0);    (*S).top --;    *e = *(*S).top;    return 1;}bool StackEmpty(SqStack S){    if(S.top == S.base) return true;    return false;}int Pass(PosType curpos){      //判断该位置是否可通过.若为1则可通过,若为0则此通道块为墙,若为-1则此通道块曾被纳入过路径但不通,    if ( m[curpos.x][curpos.y] == 1 ) return 1;  //若为其余整数说明此通道块已在当前路径上。    else return 0;}void FootPrint(PosType curpos){         //留下足迹    m[curpos.x][curpos.y] = curstep;}PosType NextPos(PosType curpos int n){  //下一位置    switch(n)    {    case 0:  //当前位置的右通路块            curpos.x += 0;            curpos.y += 1;    case 1:  //当前位置的上通路块            curpos.x -= 1;            curpos.y += 0;    case 2:  //当前位置的左通路块            curpos.x += 0;            curpos.y -= 1;    case 3:  //当前位置的下通路块            curpos.x += 1;            curpos.y += 0;    }    return curpos;}void MarkPrint(PosType curpos){   //留下不能通过的标记    m[curpos.x][curpos.y] = -1;}void PrintMaze(MazeType maze){       //打印迷宫    for(int i = 0; i < num; i++){        for(int j = 0; j < num; j++){            printf(""%d""maze[i][j]);        }        printf(""n"");    }}bool MazePath(MazeType maze PosType start PosType end){     //求迷宫中是否有从start到end的路径    PosType curpos;    SqStack S;    SElemType e;    InitStack(&S);    curpos = start;   //起点为当前位置    curstep = 1;       //路径中的第一步    do{        if( Pass(curpos) ){     //当前位置可通过            maze[curpos.x][curpos.y] = curstep;   //在迷宫中标记出足迹            e.ord = curstep;            e.seat.x = curpos.x;            e.seat.y = curpos.y;            e.di = 0;             Push(&S e);         //加入路径中            if(curpos.x == end.x && curpos.y == end.y ) return true;  //到达终点            curstep ++;             //探索下一步            curpos = NextPos(curpos 0);  //下一位置在当前位置的右侧        }        else{            Pop(&S &e);                  curstep--;     //路径上减少一个点            while(e.di == 3 && !StackEmpty(S)){  //该位置不通,留下不能通过的标记,并退回一步                MarkPrint(e.seat);                Pop(&S &e);                curstep--;            }            if(e.di < 3){         //换下一个方向探索                e.di ++;                Push(&Se);                curpos = NextPos(e.seate.di);     //设定当前位置是该新方向上的相邻块                curstep ++;            }        }    }while(!StackEmpty(S));    return false;}int main(){    void PrintMaze(MazeType maze);    bool MazePath(MazeType maze PosType start PosType end);    PosType start = {11};    PosType end = {num-1num-1};    printf(""迷宫的结构如下:"");    PrintMaze(m);    if( MazePath(mstartend) ){        printf(""n从迷宫的入口到出口的路径如下:"");        PrintMaze(m);    }    else printf(""此迷宫没有从入口到出口的路径。"");}

解决方案二:
迷宫的结构如下:0000000000
0110111010
0110111010
0111100110
0100011110
0111011110
0101110110
0100010010
0011111110
0000000000
此迷宫没有从入口到出口的路径。

在线编译运行结果
http://codepad.org/iuKBivTd

时间: 2024-05-08 09:51:18

数据结构 迷宫问题-错误 27 error C2449: 在文件范围内找到“{”(是否缺少函数头?)的相关文章

WCF分布式开发常见错误(27)

WCF分布式开发常见错误(27):Secure channel cannot be opened because security negotiation with the remote endpoint has failed 这个问题是在调试WCF分布式安全开发实践(12):消息安全模式之自定义X509 证书验证:Message_CustomX509Certificate_WSHttpBinding .发现并提出来的 ,我帮助调试,找到了问题的解决办法.发出来一起分享给大家. [1.问题描述]

c++-错误 1 error C2872: “less”: 不明确的符号

问题描述 错误 1 error C2872: "less": 不明确的符号 #include "stdafx.h" #include "stdio.h" #include "string.h" #include "ctype.h" #include "malloc.h" #include using namespace std; #define N 1000 typedef struct

c++-C++ 链接错误 fatal error LNK1104: 无法打开文件“mapnik.lib”

问题描述 C++ 链接错误 fatal error LNK1104: 无法打开文件"mapnik.lib" 我在mapnik项目中Debug模式下编译成功.lib文件,然后再另一个Debug项目中链接mapnik.lib,就出现了LNK1104, 而在Release状态下是成功的,(debug下的mapnik.lib文件有3个多G),试了半天了,还是一头雾水 解决方案 错误分析:LNK 1104是链接的错误,在链接一些lib或者exe文件时,如果链接路径错误或者无法打开其文件时,就会出

c++组建错误fatal error LNK1120: 1 unresolved externals

问题描述 c++组建错误fatal error LNK1120: 1 unresolved externals 解决方案 你的构造函数vsctor只有声明没有实现,operator+也是 main前面少了void或者int 解决方案二: http://zhidao.baidu.com/link?url=opLbcZL9X9-z6HPCTvzADhflalNetCedyWJc_X4webib9gjQPQypr-1TPlTecCPKlbmVyesEHthp0-SbX661zq 解决方案三: http

ThinkPHP提示错误Fatal error: Allowed memory size的解决方法_php实例

本文实例讲述了ThinkPHP提示错误Fatal error: Allowed memory size的解决方法.分享给大家供大家参考.具体分析如下: 如果你的ThinkPHP提示你:致命错误(Fatal error: Allowed memory size),根据网上说的提高服务器可使用内存,我觉得都不是好的解决办法.麻烦也没必要.因为这是ThinkPHP本身存在BUG. 错误提示:Fatal error: Allowed memory size of 1073741824 bytes exh

IIS中应用程序中的服务器错误HTTP Error 404.3-Not Found

应用程序中的服务器错误 HTTP http://www.aliyun.com/zixun/aggregation/16539.html">Error 404.3 - Not Found 描述: 由于 Web 服务器上配置的多用途 Internet 邮件扩展(Multipurpose Internet Mail Extensions, MIME)映射策略的原因,无法处理所请求的页面.您请求的页面具有无法识别的文件扩展名,因而不被允许. 错误代码: 0x80070032 最可能的原因: 可能是

升级mysql_upgrade 提示错误FATAL ERROR: Upgrade failed的原因

升级mysql_upgrade 提示错误FATAL ERROR: Upgrade failed的原因 2014年07月25日 10:33 by:老修--走失的镜头盖分类:网站技术 -> mysql 正文我来说两句 用mysql_upgrade 升级mysql的两种错误: 第一种. 提示FATAL ERROR:Upgrade failed 的时候时候输入mysql升级命令并输入密码后出现下面的错误提示: [root@AY1405111111157597d01Z ~]# mysql_upgrade

ios8定位提示错误kCLErrorDomain error 8

问题描述 ios8定位提示错误kCLErrorDomain error 8 ios8定位提示错误kCLErrorDomain error 8 请问怎么解决 解决方案 http://stackoverflow.com/questions/21624712/clgeocoder-returning-error-the-operation-couldn-t-be-completed-kclerrordomai

代码-关于在VS2008中的错误:error C2660: “cvCreateImage”: 函数不接受 1 个参数

问题描述 关于在VS2008中的错误:error C2660: "cvCreateImage": 函数不接受 1 个参数 代码如下,很急,谢各位#include ""stdafx.h""#include ""stdio.h"" #include ""cv.h""#include ""cxcore.h""#include &quo