
求助~~~数据结构(c语言版)课程设计 迷宫问题~~
这是试验要求~~基本要求:(1)要求要用面向过程的方法以及C语言的编程思想来完成系统的设计(2)在设计过程中涉及独立的功能模块功能要求:(1)迷宫的存储结构要合理(2)要...
这是试验要求~~
基本要求:
(1)要求要用面向过程的方法以及C语言的编程思想来完成系统的设计
(2)在设计过程中 涉及独立的功能模块
功能要求:
(1)迷宫的存储结构要合理
(2)要考虑算法的时间和空间复杂度
(3)当确定迷宫的规模以及形态之后要把至少一条迷宫的路径输出来
解决方法
(1)可以采用二维数组的方法来存储,迷宫的通路状态可以用1或0来表示
(2)在解决问题是 采用 栈 这种数据结构
最好能给个说明啊 分还可以再加的 麻烦高手了啊~~
麻烦发我邮箱里caar369@163.com 展开
基本要求:
(1)要求要用面向过程的方法以及C语言的编程思想来完成系统的设计
(2)在设计过程中 涉及独立的功能模块
功能要求:
(1)迷宫的存储结构要合理
(2)要考虑算法的时间和空间复杂度
(3)当确定迷宫的规模以及形态之后要把至少一条迷宫的路径输出来
解决方法
(1)可以采用二维数组的方法来存储,迷宫的通路状态可以用1或0来表示
(2)在解决问题是 采用 栈 这种数据结构
最好能给个说明啊 分还可以再加的 麻烦高手了啊~~
麻烦发我邮箱里caar369@163.com 展开
3个回答

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
朋友你该到 http://bbs.bccn.net/forum-5-1.html C语言论坛去提问啊那里有更多的高手的 我在做毕业设计时在里面吸收不少
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-01-04
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define m 3
#define n 4
#define maxsize 50
int maze[m+2][n+2];
typedef struct/*试探方向*/,
{
int x,y;
}item;
item move[8]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};
typedef struct/*栈元素设计*/
{
int x,y,d;
}datetype;
typedef struct/*栈*/
{
datetype data[maxsize];
int top;
}SeqStack;
SeqStack *Init_SeqStack()/*置空栈*/
{
SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack));
s->top=0;
return s;
}
int Empty_SeqStack(SeqStack *s)/*判栈空*/
{
if(s->top==0)
return 1;
else
return 0;
}
int Push_SeqStack(SeqStack *s,datetype x)/*入栈*/
{
if(s->top==maxsize-1)return 0;
else
{
s->top++;
s->data[s->top]=x;return 1;
}
}
int Pop_SeqStack(SeqStack *s,datetype *x)/*出栈*/
{
if(Empty_SeqStack(s))
return 0;
else
{
*x=s->data[s->top];
s->top--;
return 1;
}
}
int path(SeqStack *s)/*寻找路径*/
{
datetype temp;
int x,y,d,i,j;
temp.x=1;
temp.y=1;
temp.d=-1;
Push_SeqStack (s,temp);
while (!Empty_SeqStack(s))
{
Pop_SeqStack (s,&temp);
x=temp.x;
y=temp.y;
d=temp.d+1;
while (d<8)
{
i=x+move[d].x;
j=y+move[d].y;
if (maze[i][j]==0)
{
temp.x=x;
temp.y=y;
temp.d=d;
Push_SeqStack (s,temp);
x=i;
y=j;
maze[x][y]=-1;
if (x==m&&y==n)
return 1;
else
d=0;
}
else d++;
}
}
return 0;
}
void print(SeqStack *s)/*输出栈*/
{
int i;
for(i=1;i<=s->top;i++)
{
printf("{[%d,%d],%d}", s->data[i].x,s->data[i].y,s->data[i].d);
if(i<s->top)
printf("→");
if(i%3==0)
printf("\n");
}
printf("\n");
}
int main()
{
SeqStack *s ;
int i,k,j,w;
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" maze problem \n");
printf(" ------------------------- \n");
printf(" 1--suiji maze \n");
printf(" 0--exit \n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
scanf("%d",&w);
switch(w)
{
case 1:
srand((int)time(0));
for( i = 1; i <=m;i++ )
for(j=1;j<=n;j++)
{
if(rand()%2)
{
maze[i][j]=0;
}
else
maze[i][j]=1;/*随机数组*/
}
maze[1][1]=0;
maze[3][4]=0;/*入口和出口*/
for(i=0;i<m+2;i++) /*添加外围*/
{
maze[i][0]=1;maze[i][n+1]=1;
}
for (j=0;j<n+2;j++)
{
maze[0][j]=1;
maze[m+1][j]=1;
}
printf("随机生成的迷宫图为:\n\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
printf("%2d ",maze[i][j]);
printf("\n");
}
s=Init_SeqStack();
k=path(s);
if (k==1)
{
if(k==1)
printf("迷宫有路:\n");
print(s);
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
printf("%2d ",maze[i][j]);
printf("\n");
}
}
else
printf("迷宫没路\n\n");
break;
}
getch();
}
看这个如何 同学
#include <stdlib.h>
#include <time.h>
#define m 3
#define n 4
#define maxsize 50
int maze[m+2][n+2];
typedef struct/*试探方向*/,
{
int x,y;
}item;
item move[8]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};
typedef struct/*栈元素设计*/
{
int x,y,d;
}datetype;
typedef struct/*栈*/
{
datetype data[maxsize];
int top;
}SeqStack;
SeqStack *Init_SeqStack()/*置空栈*/
{
SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack));
s->top=0;
return s;
}
int Empty_SeqStack(SeqStack *s)/*判栈空*/
{
if(s->top==0)
return 1;
else
return 0;
}
int Push_SeqStack(SeqStack *s,datetype x)/*入栈*/
{
if(s->top==maxsize-1)return 0;
else
{
s->top++;
s->data[s->top]=x;return 1;
}
}
int Pop_SeqStack(SeqStack *s,datetype *x)/*出栈*/
{
if(Empty_SeqStack(s))
return 0;
else
{
*x=s->data[s->top];
s->top--;
return 1;
}
}
int path(SeqStack *s)/*寻找路径*/
{
datetype temp;
int x,y,d,i,j;
temp.x=1;
temp.y=1;
temp.d=-1;
Push_SeqStack (s,temp);
while (!Empty_SeqStack(s))
{
Pop_SeqStack (s,&temp);
x=temp.x;
y=temp.y;
d=temp.d+1;
while (d<8)
{
i=x+move[d].x;
j=y+move[d].y;
if (maze[i][j]==0)
{
temp.x=x;
temp.y=y;
temp.d=d;
Push_SeqStack (s,temp);
x=i;
y=j;
maze[x][y]=-1;
if (x==m&&y==n)
return 1;
else
d=0;
}
else d++;
}
}
return 0;
}
void print(SeqStack *s)/*输出栈*/
{
int i;
for(i=1;i<=s->top;i++)
{
printf("{[%d,%d],%d}", s->data[i].x,s->data[i].y,s->data[i].d);
if(i<s->top)
printf("→");
if(i%3==0)
printf("\n");
}
printf("\n");
}
int main()
{
SeqStack *s ;
int i,k,j,w;
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" maze problem \n");
printf(" ------------------------- \n");
printf(" 1--suiji maze \n");
printf(" 0--exit \n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
scanf("%d",&w);
switch(w)
{
case 1:
srand((int)time(0));
for( i = 1; i <=m;i++ )
for(j=1;j<=n;j++)
{
if(rand()%2)
{
maze[i][j]=0;
}
else
maze[i][j]=1;/*随机数组*/
}
maze[1][1]=0;
maze[3][4]=0;/*入口和出口*/
for(i=0;i<m+2;i++) /*添加外围*/
{
maze[i][0]=1;maze[i][n+1]=1;
}
for (j=0;j<n+2;j++)
{
maze[0][j]=1;
maze[m+1][j]=1;
}
printf("随机生成的迷宫图为:\n\n");
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
printf("%2d ",maze[i][j]);
printf("\n");
}
s=Init_SeqStack();
k=path(s);
if (k==1)
{
if(k==1)
printf("迷宫有路:\n");
print(s);
for(i=0;i<m+2;i++)
{
for(j=0;j<n+2;j++)
printf("%2d ",maze[i][j]);
printf("\n");
}
}
else
printf("迷宫没路\n\n");
break;
}
getch();
}
看这个如何 同学
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询