#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OVERFLOW -2
#define OK 1
typedef int status;
typedef struct{
int x;
int y;
}postype;
typedef struct{
int ord;
postype seat;
int di;
}selemtype;
typedef struct{
int m[10][10];
postype start,end;
}mazetype;
typedef struct{
selemtype *base;
selemtype *top;
int stacksize;
}sqstack;
mazetype maze={{ {0,0,0,0,0,0,0,0,0,0},
{0,1,1,0,1,1,1,0,1,0},
{0,1,1,0,1,1,1,0,1,0},
{0,1,1,1,1,0,0,1,1,0},
{0,1,1,1,1,0,0,0,0,0},
{0,1,1,1,0,1,1,1,1,0},
{0,1,0,1,1,1,0,1,1,0},
{0,1,0,0,0,1,0,0,1,0},
{0,0,1,1,1,1,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0}},{1,1},{8,8}};
status initstack(sqstack *s)
{
s->base=(selemtype*)malloc(100 * sizeof(selemtype));
if(!s->base) exit (OVERFLOW);
s->top=s->base;
s->stacksize=100;
return OK;
}
status push (sqstack *s,selemtype e)
{
if(s->top - s->base>=s->stacksize)
{s->base=(selemtype*)realloc(s->base,(s->stacksize+10)*sizeof(selemtype));
if(!s->base) exit(OVERFLOW);
s->top=s->base + s->stacksize;
s->stacksize+=10;
}
*s->top++=e;
return OK;
}
status pop(sqstack *s,selemtype *e)
{if(s->top==s->base) return 0;
*e=*--s->top;
return OK;
}
status stackempty(sqstack s){
if(s.top==s.base) return 1;
return 0;
}
status mazepath()
{sqstack mail,daty;
postype curpos;
selemtype e;
int curstep=1;
postype direc[4]={{0,1},{1,0},{0,-1},{-1,0}};
initstack(&mail);initstack(&daty);
curpos=maze.start;
do{
if(maze.m[curpos.y][curpos.x])
{maze.m[curpos.y][curpos.x]=0;
e.ord=curstep;
e.seat=curpos;
e.di=1;
push(&mail,e);
if(curpos.x==maze.end.x&&curpos.y==maze.end.y)
{
if(stackempty(mail))
printf("No path!");
else
{
while(!stackempty(mail)){
pop(&mail,&e); push(&daty,e);
}
printf("path:start");
while(!stackempty(daty)){
pop(&daty,&e);
printf("->(%d,%d)",e.seat.x,e.seat.y);
}
printf("->end\n");
}
return 1;
}
curstep=curstep+1;
curpos.x=curpos.x+direc[1].x;
curpos.y=curpos.x+direc[1].y;
}
else
{if(!stackempty(mail))
{
pop(&mail,&e);
while(e.di==4&&!stackempty(mail))
pop(&mail,&e);
if(e.di<4){
e.di++;push(&mail,e);
curpos=e.seat;
curpos.x=curpos.x+direc[e.di].x;
curpos.y=curpos.x+direc[e.di].y;
}
}
}
}while(!stackempty(mail));
return 0;
}
main()
{
clrscr();
mazepath();
}
这是个迷宫程序,是按照清华版《数据结构》的迷宫算法写的;
此程序已链接成功,但是运行结果却是“null pointer assignment”
小弟是新手,请各位高手帮帮忙,不胜感激
我检查了好几遍了,对算法已了解了,但是我真的没检查出来,能否告诉我是哪里的逻辑错误码啊?
C语言程序题目:由键盘输入三个数a,b,c,按从小到大的顺序输出这三个数...
intmain(){ inta,b,c,t;printf(请输入三个数:);scanf(%d%d%d,a,b,c);if(ab){ t=a;a=b;b=t;} if(ac){ t=a;a=c;c=t;} if(bc){ t=b;b=c;c=t;} printf(从小到大的顺序是:%d%d%d\\n,a,b,c);return0;} \/iknow-pic.cdn.bcebos.com\/3c6d55fbb2fb4316d355249d2e...
用C语言解决这一道题: 编写一个程序,首先要求用户输入名字,然后要求...
1、首先在Ubuntu的终端写出要实现的内容步骤,注释步骤可以帮助书写者理清思路。2、接下来我们运用Input方法,提示用户输入信息,input中的参数就是提示文字。3、接下来接收好用户输入的内容后,我们就可以运用用户输入的内容进行逻辑处理。4、下面我们运行程序,你会在界面中看到,终端提示你输入名字,不输入...
一个c语言小问题,编写程序?
按照题目要求编写的C语言程序如下(见图)
C语言程序运行错误
是这样,你的程序有两个问题:1. 逻辑关系错误:如jaybestwang同学所说,while内的逻辑是始终成立的,c不等于'n'就肯定等于'N'嘛,所以改成while(c!='n'&&c!='N') ;2. 程序设计缺陷:如deng576631589同学所说,scanf函数会把缓冲区的回车符也载入,因此第二个scanf函数实际上接收的是你第一...
我做了一个非常简单C语言的运行程序 但是无法运行 老提示主函数有问题...
主函数定义为 int型,但是在主函数结束后没有返回一个整型值,导致编译不通过。myss函数声明时,行末没有添加";"在system("pause");后添加return 0;另外在main函数内连续使用两个以上scanf的时候会导致输入值错误。建议第一个scanf语句写为scanf("%d%*c",&sa);good luck~!
c语言出现了一个问题,导致程序停止正常工作,请关闭程序
1、野指针,你使用的指针指向未知区域 2、scanf函数输入整形、字符……的时候缺少了& 3、缓冲区溢出,也就是说你使用数组时不经意间越界了
C语言问题!!!编写一个程序,找出32位中最大和最小的数,这个代码要怎么写...
define N 32 \/\/数组的大小 int main(){ int a[N]={1,2,3,6,9,8,5,4,6,7,2,0,1,3,5,565,51,3,1,1,3,13,1,13,13,1,3,31,13,13,31,3,0};int i=0;int max=a[0],min=a[0];for(i=0;i<N;i++){ if(maxa[i]) min=a[i];} printf("max=%d, min=%d\\...
c语言问题,写出一个C程序的构成,该怎么回答
一个C程序是由函数构成的。一个C程序至少包含一个函数(main函数),也可以包含一个main函数和若干个其他函数,函数是C程序的基本单位。C的函数相当于其它语言中的子程序,用函数来实现特定功能,可以说C是函数式语言,程序全部 工作都是由函数来完成的,C的这种特点使得容易实现程序的模块化。
一个C语言程序的问题
main(){ \/\/clrscr();mazepath();} 下面是我的代码:(同一本书,我C++版的,请参考,如果有数据结构方面的问题我们可以一起讨论)凡是喜欢数学或编程都是我的朋友!\/\/Migong.h \/\/\/ \/\/\/迷宫求解\/\/\/ \/\/\/作者:baihacker\/\/\/ \/\/\/时间:11.10.2006\/\/\/ \/\/\/ \/*class:Matrix:矩阵类 offsets:搜索...
C语言问题求解答,题目编写一个程序,接受一个整数输入,然后显示所有小于...
思路如下:判断是否素数:用所有小于该数的数去除这个数(从2开始),如果有一个能整除,则不是素数;如果没有一个能整除则是该数是素数。条件(int(m\/n)==m\/n)则整除,否则不整除(n<m)如5,用2,3,4去除5,没有一个可整除则5是素数;用2,3去除4,2可整除4,所以4不是素数。