我不知道这和栈有什么联系

hiqrf 2008-03-16 12:24:28
学了栈,老师让我们写迷宫程序,我想了好久还是不明白,它写栈有什么关系...以下是我的程序,...

#include<iostream>
using std::cout;
using std::cin;
using std::endl;


int main()
{
char**a;
int x;
int y;

cout<<"<--请输入迷宫的行数与列数-->"<<endl;
cin>>x>>y;
a=new char*[x+2];
for(int i=0;i<(x+2);i++)
a[i]=new char[y+2];
cout<<"<--请输入迷宫(0表示通路,*表示墙)-->"<<endl;
for(int i=1;i<=x;i++)
for(int j=1;j<=y;j++)
cin>>a[i][j];
for(int i=0;i<(x+2);i++)
{
a[i][0]='*';
a[i][y+1]='*';
}
for(int j=0;j<(y+2);j++)
{
a[0][j]='*';
a[x+1][j]='*';
}
a[1][0]='0';
a[x][y+1]='0';
cout<<"<--你输入的迷宫为:"<<endl;
for(int i=0;i<(x+2);i++)
{
for(int j=0;j<(y+2);j++)
cout<<a[i][j];
cout<<endl;
}


if(a[1][1]!='0'||a[x][y]!='0')
{
cout<<"<--此迷宫无解-->";
return 0;
}
int i=1;
int j=0;
cout<<i<<","<<j;
while(a[x][y+1]!='.')
{
if(a[i][j+1]!='.'&&a[i][j+1]!='*'&&a[i][j+1]!='+')
{
a[i][j]='.';
j=j+1;
cout<<"右";
cout<<i<<","<<j;
}
else if(a[i-1][j]!='.'&&a[i-1][j]!='*'&&a[i-1][j]!='+')
{
a[i][j]='.';
i=i-1;
cout<<"上";
cout<<i<<","<<j;
}
else if(a[i][j-1]!='.'&&a[i][j-1]!='*'&&a[i][j-1]!='+')
{
a[i][j]='.';
j=j-1;
cout<<"左";
cout<<i<<","<<j;
}
else if(a[i+1][j]!='.'&&a[i+1][j]!='*'&&a[i+1][j]!='+')
{
a[i][j]='.';
i=i+1;
cout<<"下";
cout<<i<<","<<j;
}
else
{
a[i][j]='+';
cout<<"返回";
if((a[i][j+1]!='*')&&(a[i][j+1]!='+')) j=j+1;
else if((a[i+1][j]!='*')&&(a[i+1][j]!='+')) i=i+1;
else if((a[i][j-1]!='*')&&(a[i][j-1]!='+')) j=j-1;
else if((a[i-1][j]!='*')&&(a[i-1][j]!='+')) i=i-1;
x=i;y=j;
}
if(i==1&&j==0) break;
}
if(i==1&&j==0)
{
cout<<"--------此迷宫没有出路------------"<<endl;
}
else
{
cout<<endl<<"------找到迷宫出路,如图所示:----------"<<endl;
for(int k=0;k<x+2;k++)
{
for(int h=0;h<y+2;h++)
cout<<a[k][h]<<" ";
cout<<endl;
}

}
return 0;
}

...全文
94 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
没遇到过这种情况.
tianjiao85 2008-03-19
  • 打赏
  • 举报
回复
学数据结构应该首先弄清楚逻辑结构和存储结构:

数据之间的联系是内在的,不可见。可见的是表现出来的结构。
数据结构的主要内容之一:
1.研究数据的逻辑结构和物理结构。

逻辑结构:数据元素之间的结构关系,即数据元素间的内在关系。
物理结构:指数据结构在机内的表示。
常见逻辑结构有:线性表,树,图。
物理结构(存储结构):顺序存储和链式存储。
顺序存储:用地址连续的一组内存空间表示一组数据元素,逻辑上相邻的数据元素在(计算机内)存储位置也相邻,数组就是。
链式存储:通过指针实现的链表就是这个,逻辑上相邻的数据元素在(计算机内)存储位置不相邻,但是逻辑结构是相邻的。
比如我说:栈用顺序存储结构实现,就是说用数组实现,我说用链式存储结构实现,就是用链表,不论那种存储结构,只要能实现其逻辑结构,那么这个结构还是这个结构,不会我用数组实现的栈就不是栈了。
个人学习小结,供大家分享,不足之处拿出来讨论一下。

xingchenbbs 2008-03-19
  • 打赏
  • 举报
回复
星辰技术社区:www.netcsharp.cn ,在这里,您不需要发帖,回帖,甚至是注册,您只需每天浏览下,即可获取最新的.NET技术信息~

我们的宗旨:以最快的速度为您提供最佳的解决方案
hiqrf 2008-03-18
  • 打赏
  • 举报
回复
是是是....学得不好哈,谢谢各位了.....
vdouke 2008-03-18
  • 打赏
  • 举报
回复
楼主,那你自己说说你写的代码有没用到栈?
栈不一定就是固定的书本上说的那样啊.
一个数组,它只要具有栈的特性了,那不也是栈?
你的程序明显是用固定数组构造的一个简单的栈嘛.
sws_martian 2008-03-18
  • 打赏
  • 举报
回复
我感觉用堆栈应该是因为迷宫求解过程相当于一个深度优先搜索过程,堆栈保留走过的路径,在无路可走时便于回溯吧

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧