本文目录一览:
- 1、求一款曾经玩过的【吃豆子】类型的游戏。(怀旧) 3D。少说也是10年以前的游戏了。
- 2、寻找一个很老的游戏、、求大神们来看看,有没有印象,告诉一下游戏的名字、、、感激不尽、、、
- 3、求苹果手机游戏,3D动作类的,好玩就行,其他类型好玩的也可以
- 4、数据结构迷宫问题
- 5、数据结构迷宫问题,程序有错,请问下面的程序应该怎么修改,急!!!
求一款曾经玩过的【吃豆子】类型的游戏。(怀旧) 3D。少说也是10年以前的游戏了。
25岁游戏老将《吃豆》3D新版将登陆PC
Namco近日宣布,为纪念著名的《吃豆人》(Pac-Man)系列诞生25周年,Namco决定发行《吃豆人的世界3》(Pac-Man World 3)。《吃豆人》系列最早是在1980年以Toru Iwatani吃黄点的形式和大家见面的。那个长得像块缺了一角的匹萨饼的吃豆人,发着夸嚓夸嚓的咀嚼声来到了电子游戏界并一往直前地进军着。25年后,吃豆人成了诸多游戏中闪亮的一颗明星,它的灵感被400多种不同的商品借用,从零食到手表到空调,甚至卡通。
就是说还没有登录PC平台拉!我们一起期待吧!
寻找一个很老的游戏、、求大神们来看看,有没有印象,告诉一下游戏的名字、、、感激不尽、、、
《100个超级Windows小游戏》
一、动作类游戏
超级经典的迷魂车——Speed-Kar
很好玩的赛车游戏——FatalFumes
HP JetSpeed——让你体验四驱车的乐趣
炸弹超人Nitro!
小巧逗趣的“DOOM”——BadToys
爆笑的无聊游戏Nonsense Trilogy
Nonsense TrilogyⅡ爆笑游戏的后续
snowcraft:体验打雪仗的乐趣
经典的桌面游戏——玩具的报复
钻石大冒险——Diamond CavesⅡ
皮卡丘排球大战PIKA V!
另类PACMAN——Amazin' SPISPOPD
跑啊跑,逃啊逃,一定要躲开AtrⅡ呦
高难度游戏,Batnball挑战你的反应极限
可爱的青蛙——Bzzz
修炼功夫的Aikanoid
安全着陆——Moonshot
有趣的COSMO CHICKEN,锻炼你的应变能力
经典游戏PACMAM
Whack让你的反应更机敏
SEGA的经典格斗游戏——东京番外地
二、益智类游戏
玩腻平面俄罗斯了吗?试试三维版的3D-Lomtris吧!
方块+单词=Lettris
有新意的俄罗斯方块——Click mania
Lexicon挑战你的英文单词功力
生活化的英语教单词游戏——Spell-Mell
Puzzler让你重温魔方时代的乐趣
让人大伤脑筋且爱不释手的益智游戏——Barraging Barriers
脑力激荡的佳作——Dweep
菌种连锁反应游戏——Molecules
考验你空白排列能力——BabylonⅡ
物以类聚——Ahal Game
搬箱工人,经典!
活泼逗趣的另类打砖块——MozPongDx
画面精彩的打砖块游戏——Dx-Ball 2
3D的打砖块——3D Crackanoid Ultra
漂亮的打砖块——Arkanoid
Gameabc——提高英文的打字速度
又是俄罗斯方块??Quantik让你有不一样的感觉
像俄罗斯方块一样的字迷游戏——Geetris
以自己喜欢的方式配置游戏——YourTds
专业级别的扫雷
考验你的记忆力,那就来玩“记忆王”吧!!
上手难度很大的泡泡龙游戏——3D Space Fighter
迷宫游戏——3dmaze
Arcadia——具有丰富迷题的游戏大集合
轻松又动脑的小游戏——Ballon
拼图游戏的经典之作——BrainsBreaker
Chip捡钥匙的小游戏
华容道让你想破脑袋
国际象棋中的迷题——Knight Tour
Break Through——让你爱不释手的打砖块
可以上网去玩的俄罗斯方块——Enable Netris32
猜数高手——让你过足“破解密码”瘾
……
三、情节类游戏
四、体育类游戏
五、射击类游戏
六、棋牌类游戏
我尽力了,只能将范围缩小到这,不懂是哪个,抱歉。
求苹果手机游戏,3D动作类的,好玩就行,其他类型好玩的也可以
TOP1—时空猎人
《时空猎人》是一款格斗类手机网游,横世出击成为次时代格斗之王!完美再现DNF式豪爽打击快感,无限连击、秒杀大招、全屏幕华丽魔法,带给你全所未有的畅快游戏体验。
五大职业任选,随机副本不掉线,公正的竞技场PK,这是2013年最爽的指尖格斗风暴!次世代格斗之王,完美再现超豪爽打击快感,无限连击、秒杀大招、全屏幕华丽魔法,配合智能手机的体感功能,带给你全所未有的畅快游戏体验。
TOP2—我叫MT
Online
《我叫MT
Online》是根据著名动漫作品《我叫MT》改编,游戏采用卡牌战斗的经典方式,还原了动漫中的人物角色性格和搞笑做派,同时把《魔兽世界》各大经典副本以独特的方式展现出来。
玩家可以通过收集、合成多种多样的卡牌来提升等级。卡牌形象包括哀木涕、傻馒、小德等。无论你是否是魔兽玩家?是否AFK?都可以在这里和你的朋友在一起战斗,一起下副本,以一种崭新的方式重新体验艾泽拉斯的掌中世界!
TOP3—王者之剑
《王者之剑》是全球首款横版动作手机网络游戏。游戏画面精美,技能华丽,目前开放了战士,刺客,法师,游侠4个职业。四大职业各具特色,技能释放零消耗,拳拳入肉,打击感强,再现完美街机格斗体验。
手机游戏格斗之王《王者之剑》以中世纪英伦传奇人物——亚瑟王及其麾下十二圆桌骑士的故事为背景,画面精美,技能绚丽。作为一款横版动作游戏,《王者之剑》有着及其出色的打击感,游戏在战斗中采用虚拟摇杆加技能键的操作方式,摇杆位置,按键大小适中,响应灵敏,操作方便。
游戏采用无锁定的战斗模式,屏幕中左键为虚拟摇杆控制玩家移动,右键为技能键点击释放技能。技能释放不耗蓝,等待CD,战斗中可以补血,也可以复活。
TOP4—梦想海贼王
《梦想海贼王》是一款卡牌类手游巨作,游戏以全球第一超人气动漫《海贼王》为题材,采用Q版风格及配合新奇多样的玩法收到广大用户喜爱。
《梦想海贼王》采用新颖的战斗模式,严格遵循《海贼王》的故事发展线路,超高水准的重现了原作中的海贼世界,游戏中精致的画面和酷炫的战斗技能堪与客户端网游大作媲美,让玩家在丰富多彩的动漫世界中尽情享受征战伟大航路的快感!
TOP5—武侠Q传
《武侠Q传》是一款3D卡牌手游,区别于以往陈旧的卡牌手游模式,本作是融入了3D画面、加入了策略化布阵、新增了缘分系统等。故事发生于魔教乱世的年代,许多武林正派为了抵抗魔教教主而两败俱伤后,玩家所属门派的师父也因此次战役而重病身亡,身为最优秀的大弟子只好师承掌门之位,重建门派,闯荡江湖,培养许多弟子,壮大声势替恩师报仇,这就是玩家在游戏中的任。
随着国内手机游戏市场的火爆,越来越多的卡牌游戏作为手机网游的突击兵进军手游市场!在大多卡牌游戏均为2D的现状下,国内领先的手游发行商昆仑游戏联合研发商火谷游戏推出了首款3D卡牌手游,给急需推陈出新的卡牌领域带来了一阵强心剂。
TOP6—大掌门
行侠仗义惩奸除恶的武侠故事一直都是受到广大民众喜爱的题材之一,诸多武侠小说的宗师也创造出一个个美丽飘渺的武侠梦,这使得武侠题材在华人地区有着不可比拟的影响力。
《大掌门》这个游戏就是基于武侠梦而诞生的武侠策略类网游。与一般武侠游戏不同的是,玩家并非扮演一个持剑走江湖的侠客,而是统领整个门派不断招收知名武侠人士的'大掌门'。
TOP7—世界OL
世界OL是一款自由而奔放的世界回合手机网游。在游戏里没有什么会束缚你,可以尽情的去抒发自己的情感。游戏有着三大系统,分为:任务、装备、经济。其中任务有着剧本任务,寻宝任务,对抗任务。
世界OL这个游戏,没有什么特色,既没有战斗游戏那恢弘的画面,也没有休闲游戏那华丽,舒适的界面风格,也没有站战争题材类壮阔波澜的场景。但是,最适合的是一种平平淡淡的生活,温馨,宁静,安逸。
TOP8—龙威online
2011年动作革新网游《龙威online》拥有极酷超爽战斗体验、绚丽画面效果、激烈的PVP内容、大型团队作战冒险等多种特点,将为玩家带来一款完全不同的游戏盛筵!
以前玩家只能单枪匹马进行冒险或者是约上三五好友一起冒险,现在《龙威online》团队作战系统为玩家提供了多达25人作战的全新玩法,更为玩家创造了更多的合作与激情的乐趣,团队战斗所创造的宏伟战斗场面让很多人都热血沸腾,它给大家带来的不仅仅是激情与快乐,更有那相互扶持的兄弟与真情!
TOP9—新明珠三国
天下大势,合久必分,分久必合。三国各势力枭雄与传奇人物齐聚一堂,著名历史桥段赤壁之战、华容道、火烧博望坡、千里走单骑、星落五丈原等经典剧情百分百还原现场,3D即时战斗打造《新明珠三国》网游!
神秘睿智的谋士能从阴阳五行中汲取知识,有着强大的精神力量;通过各种法术和符印的运动,能够引动天地之力,呼风唤雨甚至驱神使将。个中高手甚至还精研颠倒阴阳转乾移坤之法,犹善施展驱鬼定身之法,令人防不胜防。如何利用谋士打天下?这将是考验大伙的一道难题。
TOP10—比武招亲
《比武招亲》是一款金庸武侠题材的的Q版武侠卡牌手游。《比武招亲》用最放肆大胆的婚姻方式诠释了最古老浪漫的爱情故事。
只要您是真正的游戏玩家高手,有一身好武功,不管您是屌丝还是高富帅,都能在金庸的武侠世界里面抱得美人归,笑傲江湖!
部落冲突
《部落战争 Clash of Clans》 是一款划时代的战争策略游戏。快来建设您的村庄,训练您的军队和与全球的数百万玩家一起战斗吧!您的愿望,我们满足:广大玩家企盼已久的战略游戏巨作部落…
大小:49.65M 下载:34,944次 时间:2014-10-22 游戏厂商:Supercell
饥饿的鲨鱼:进化 破解版
饥饿的鲨鱼:进化(Hungry Shark Evolution)是Future Games of London开发的一款休闲益智类的游戏。 饥饿的鲨鱼:进化(Hungry Shark Evolution)的官方介绍 《饥饿的鲨鱼:进化 Hungry Shark Evolution》是一款快节奏…
大小:77.99M 下载:19,594次 时间:2014-10-24 游戏厂商:Future Games of London
死亡之地:未来世界 破解版
死亡之地:未来世界 破解版(Dead Earth: Sci-fi FPS Shooter)是ThunderBull开发的一款射击类游戏。 死亡之地:未来世界 破解版(Dead Earth: Sci-fi FPS Shooter)的官方介绍 《死亡之地:未来世界 Dead Earth: S…
大小:72.41-77.78M 下载:12,566次 时间:2014-10-22 游戏厂商:ThunderBull
盟军敢死队3D
盟军敢死队3D(mengjungansidui)是掌上纵横信息技术(北京)有限公司开发的一款射击类游戏。 盟军敢死队3D(mengjungansidui)的官方介绍 《盟军敢死队3D》是一款双摇杆上帝视角动作射击游戏。美…
大小:44.86M 下载:11,346次 时间:2014-10-24 游戏厂商:掌上纵横信息技术(北京)有限公司
鲁莽赛车3 破解版
鲁莽赛车3(Reckless Racing 3)是Pixelbite开发的一款竞速类游戏。 鲁莽赛车3(Reckless Racing 3)的官方介绍 《鲁莽赛车3》作为 “Reckelss Racing” 系列的第三作,通过前两作的磨练和所积累的经验,Pix…
大小:391.49M 下载:20,980次 时间:2014-10-25 游戏厂商:Pixelbite
搏击长空:制空霸权 破解版
《搏击长空:制空权》提供了超过40架喷气式飞机和超过40亿平方英尺的陆地和海洋。玩家将进入丰富的具有挑战性的任务模式,在沙漠、海洋、高山、繁华的都市上空作战。高加速度、战略…
大小:944.89M 下载:11,536次 时间:2014-10-22 游戏厂商:BANDAI NAMCO Games Inc.
无人机:暗影突袭 破解版
无人机:暗影突袭 破解版(Drone : Shadow Strike)是Reliance Big Entertainment (UK) Private Limited开发的一款军事射击类游戏。 无人机:暗影突袭 破解版(Drone : Shadow Strike)的官方介绍 无人机:暗影突袭 Drone :…
大小:54.4M 下载:10,608次 时间:2014-10-20 游戏厂商:Reliance Big Entertainment (UK) Private Limited
移动迷宫 破解版
移动迷宫 破解版(The Maze Runner)是PIKPOK开发的一款跑酷类游戏。 移动迷宫 破解版(The Maze Runner)的官方介绍 解锁神秘的迷宫,在官方《移动迷宫》游戏中竞争求生! 你与一群林间斗士们被…
大小:75.84M 下载:10,840次 时间:2014-10-21 游戏厂商:PIKPOK
异形大战铁血战士:进化 破解版
异形大战铁血战士:进化 破解版(AVP: Evolution)是Fox Digital Entertainment, Inc开发的一款动作射击类游戏。 异形大战铁血战士:进化 破解版(AVP: Evolution)的官方介绍 宇宙大战中最危险的物种将首次…
大小:302.61M 下载:10,754次 时间:2014-10-22 游戏厂商:Fox Digital Entertainment, Inc
金属咆哮3 破解版
《金属咆哮3 Metal Wars 3》又名《合金战争3》,是一款动作射击类3D机战游戏,游戏将剧情背景时间设定在公元2100年,界统一政权命名为“地球”,不过这个统一却危机四伏,分裂组织不惜一…
大小:316.29M 下载:11,195次 时间:2014-10-24 游戏厂商:Goorusoft
无人岛:生存
无人岛:生存(Thrive Island)是John Wright开发的一款沙盒类游戏。 无人岛:生存(Thrive Island)的官方介绍 无人岛是一个开放的世界,游戏目的是在这个充满敌意的环境中生存。用你的建筑,设计,…
大小:48.59M 下载:8,415次 时间:2014-10-23 游戏厂商:John Wright
兔子杰瑞大冒险2
兔子杰瑞大冒险2(tuzijierui)是北京乐赢互动科技有限公司开发的一款休闲类游戏。 兔子杰瑞大冒险2(tuzijierui)的官方介绍 曾蝉联苹果app store一周的兔子登录安卓平台了~,活泼可爱的兔子杰…
大小:26.04M 下载:9,163次 时间:2014-10-24 游戏厂商:北京乐赢互动科技有限公司
暴力狂飙
暴力狂飙(OverSpeed)是波克城市网络科技(上海)有限公司开发的一款赛车类游戏。 暴力狂飙(OverSpeed)的官方介绍 全国排行榜强势出击! ★挑战全国排行,成就车神经典★ 超越对手鬼车…
大小:34.51M 下载:6,082次 时间:2014-10-20 游戏厂商:波克城市网络科技(上海)有限公司
共和国 破解版
共和国(République)是Camouflaj, LLC开发的一款潜行逃脱类游戏。 共和国(République)的官方介绍 《République》是一款由Camouflaj LLC开发的一款潜行逃脱类游戏,故事灵感来源于英国作家乔治·奥威…
大小:998.52-1126.31M 下载:8,274次 时间:2014-10-24 游戏厂商:Camouflaj, LLC
3D像素射击
像素射击3D(Pixel Gun 3D)是RiliSoft ltd开发的一款像素射击类游戏。 像素射击3D(Pixel Gun 3D)的官方介绍 敌人的数量不断增加,经过短暂的游戏时间,你就会有成群的僵尸从四面八方攻击你,让…
大小:214.86M 下载:10,761次 时间:2014-10-25 游戏厂商:RiliSoft ltd
速度与激情6:游戏
速度与激情6:游戏(Fast Furious 6: The Game)是Kabam开发的一款赛车竞速类的游戏。 速度与激情6:游戏(Fast Furious 6: The Game)的官方介绍 欢迎来到《速度与激情6》。当您在伦敦街道上漂移和进…
大小:262.63M 下载:5,530次 时间:2014-10-21 游戏厂商:Kabam
拳皇98 破解版
拳皇98 破解版(THE KING OF FIGHTERS '98)是SNK PLAYMORE开发的一款街机类游戏。 拳皇98 破解版(THE KING OF FIGHTERS '98)的官方介绍 拳皇98 破解版(THE KING OF FIGHTERS '98)没有单独的故事情节,是单…
大小:73.37M 下载:7,727次 时间:2014-10-24 游戏厂商:SNK PLAYMORE
真实漂移 破解版
真实漂移(Real Drift)是RealGames开发的一款竞速类游戏。 真实漂移(Real Drift)的介绍 真实漂移 Real Drift 是一款赛车漂移游戏。漂移作为一种独特的驾驶技术不仅需要控制速度,还需要控制路线…
大小:149.74M 下载:7,082次 时间:2014-10-24 游戏厂商:RealGames
猎鹿人2014 破解版
《猎鹿人2014 Deer Hunter 2014》是GLU出品的射击游戏。iOS全球第一名最受欢迎游戏现在登陆Google Play离开办公室,收拾行装,重回最原始的大自然,我们为您呈上手机平台上最逼真、最绚烂、最…
大小:49.06M 下载:10,490次 时间:2014-10-25 游戏厂商:Glu Mobile
幸存者:遗忘的森林
幸存者:遗忘的森林(The Survivor)是Starship Studio开发的一款动作类游戏。 幸存者:遗忘的森林(The Survivor)的官方介绍 欢迎来到“幸存者”的世界,由未知病毒已经消灭了世界上大部分人口。…
大小:146.69M 下载:5,504次 时间:2014-10-20 游戏厂商:Starship Studio
数据结构迷宫问题
#include stdio.h
#include malloc.h
#include conio.h
typedef struct pos /*描述迷宫当前位置和方向*/
{
int x;
int y;
int way; /*0:无效,1:左,2:下,3:右,4:上*/
}P;
typedef struct LinkNode /*链表结构,用于栈的元素类型*/
{
P pos;
struct LinkNode *next;
}LinkNode;
typedef struct stack /*链式栈,用于存储迷宫路径信息*/
{
LinkNode *head; /*头指针*/
}Stack;
int row=0; /*迷宫的行数*/
int line=0; /*迷宫的列数*/
void InitStack(Stack *s) /*栈置空*/
{
s-head=NULL;
}
void Push(Stack *s,P p) /*数据入栈*/
{
LinkNode *LN=(LinkNode *)malloc(sizeof(LinkNode));
LN-pos=p;
LN-next=s-head;
s-head=LN;
}
P Pop(Stack *s) /*栈顶元素出栈*/
{
P pos;
LinkNode *LN;
LN=s-head;
s-head=s-head-next;
pos=LN-pos;
delete LN;
return pos;
}
P GetPop(Stack s) /*读取栈顶元素*/
{
return s.head-pos;
}
int Empty(Stack s) /*判空*/
{
if(s.head==NULL)
return 1;
else
return 0;
}
int **InitMaze() /*返回迷宫的二维指针*/
{
int **maze=NULL;
int i;
int j;
printf("请输入迷宫的行跟列(x,y):");
scanf("%d,%d",row,line); /*输入迷宫的行和列*/
maze=(int **)malloc((row+2)*sizeof(int *));
for(i=0;irow+2;i++)
{
maze[i]=(int *)malloc(sizeof(int)*(line+2));
}
printf("请输入迷宫\n"); /*输入迷宫,1代表路障,0代表通行*/
for(i=1;i=row;i++)
for(j=1;j=line;j++)
scanf("%d",maze[i][j]);
for(i=0;iline+2;i++) /*将迷宫的四周都变为1*/
maze[0][i]=1;
for(i=0;iline+2;i++)
maze[row+1][i]=1;
for(i=0;irow+2;i++)
maze[i][0]=1;
for(i=0;irow+2;i++)
maze[i][line+1]=1;
for(i=0;irow+2;i++) /*输出迷宫*/
{
for(j=0;jline+2;j++)
printf("%3d",maze[i][j]);
printf("\n");
}
return maze;
}
void PrintWay(Stack p) /*输出路径*/
{
P pos;
Stack t; /*临时栈,用于存储从入口到出口的路径*/
LinkNode *temp;
int a,b;
InitStack(t);
temp=(LinkNode *)malloc(sizeof(LinkNode));
temp-pos=Pop(p); /*取栈顶元素,即出口*/
Push(t,temp-pos); /*入栈*/
free(temp);
while(!Empty(p))
{
temp=(LinkNode *)malloc(sizeof(LinkNode));
temp-pos=Pop(p); /*获取下一个元素*/
a=GetPop(t).x-temp-pos.x; /*左:a=0,b=1; 下:a=1,b=0*/
b=GetPop(t).y-temp-pos.y; /*右:a=0,b=-1 上:a=-1,b=0;*/
if(b==1)
temp-pos.way=1;
else if(a==1)
temp-pos.way=2;
else if(b==-1)
temp-pos.way=3;
else if(a==-1)
temp-pos.way=4;
Push(t,temp-pos); /*新位置入栈*/
free(temp);
}
printf("迷宫的路径为:\n");
printf("前两个数字表示位置,最后一个数字表示方向\n");
printf("1表示向左,2表示向下,3表示向右,4表示向上,0表示无方向\n");
while(!Empty(t)) /*输出路径*/
{
pos=Pop(t);
printf("%3d,%3d,%3d\n",pos.x,pos.y,pos.way);
}
}
int FindMaze(int **maze,int r,int l) /*寻找路径,找到返回1,没找到返回0*/
{
Stack p,q; /*栈p,q分别表示探索迷宫的路径和过程*/
P temp1,temp2;
int a,b;
InitStack(p);
InitStack(q);
temp1.x=1;
temp1.y=1; //
maze[1][1]=-1; /*标记已经走过*/
Push(p,temp1);
Push(q,temp1);
while(!Empty(q))
{
temp2=GetPop(q);
if(!(GetPop(p).x==GetPop(q).x
GetPop(p).y==GetPop(q).y))
Push(p,temp2); /*若有新元素入栈,就把q的栈顶元素存入p中*/
a=temp2.x;
b=temp2.y+1; /*当前位置左方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
a=temp2.x+1;
b=temp2.y; /*当前位置下方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
a=temp2.x;
b=temp2.y-1; /*当前位置右方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
a=temp2.x-1;
b=temp2.y; /*当前位置上方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
if(GetPop(p).x==GetPop(q).x
GetPop(p).y==GetPop(q).y) /*若四个方向都走不通,则数据出栈,退回一格*/
{
Pop(p);
Pop(q);
}
}
return 0; /*探索迷宫失败*/
}
void main()
{
int **maze=InitMaze(); /*初始化迷宫*/
if(FindMaze(maze,row,line)) /*探索路径*/
printf("路径探索成功!\n");
else
printf("路径探索失败!\n");
getch();
}
满意请采纳。
数据结构迷宫问题,程序有错,请问下面的程序应该怎么修改,急!!!
#include stdio.h
#include malloc.h
#include conio.h
typedef struct pos /*描述迷宫当前位置和方向*/
{
int x;
int y;
int way; /*0:无效,1:左,2:下,3:右,4:上*/
}P;
typedef struct LinkNode /*链表结构,用于栈的元素类型*/
{
P pos;
struct LinkNode *next;
}LinkNode;
typedef struct stack /*链式栈,用于存储迷宫路径信息*/
{
LinkNode *head; /*头指针*/
}Stack;
int row=0; /*迷宫的行数*/
int line=0; /*迷宫的列数*/
void InitStack(Stack *s) /*栈置空*/
{
s-head=NULL;
}
void Push(Stack *s,P p) /*数据入栈*/
{
LinkNode *LN=(LinkNode *)malloc(sizeof(LinkNode));
LN-pos=p;
LN-next=s-head;
s-head=LN;
}
P Pop(Stack *s) /*栈顶元素出栈*/
{
P pos;
LinkNode *LN;
LN=s-head;
s-head=s-head-next;
pos=LN-pos;
delete LN;
return pos;
}
P GetPop(Stack s) /*读取栈顶元素*/
{
return s.head-pos;
}
int Empty(Stack s) /*判空*/
{
if(s.head==NULL)
return 1;
else
return 0;
}
int **InitMaze() /*返回迷宫的二维指针*/
{
int **maze=NULL;
int i;
int j;
printf("请输入迷宫的行跟列(x,y):");
scanf("%d,%d",row,line); /*输入迷宫的行和列*/
maze=(int **)malloc((row+2)*sizeof(int *));
for(i=0;irow+2;i++)
{
maze[i]=(int *)malloc(sizeof(int)*(line+2));
}
printf("请输入迷宫\n"); /*输入迷宫,1代表路障,0代表通行*/
for(i=1;i=row;i++)
for(j=1;j=line;j++)
scanf("%d",maze[i][j]);
for(i=0;iline+2;i++) /*将迷宫的四周都变为1*/
maze[0][i]=1;
for(i=0;iline+2;i++)
maze[row+1][i]=1;
for(i=0;irow+2;i++)
maze[i][0]=1;
for(i=0;irow+2;i++)
maze[i][line+1]=1;
for(i=0;irow+2;i++) /*输出迷宫*/
{
for(j=0;jline+2;j++)
printf("%3d",maze[i][j]);
printf("\n");
}
return maze;
}
void PrintWay(Stack p) /*输出路径*/
{
P pos;
Stack t; /*临时栈,用于存储从入口到出口的路径*/
LinkNode *temp;
int a,b;
InitStack(t);
temp=(LinkNode *)malloc(sizeof(LinkNode));
temp-pos=Pop(p); /*取栈顶元素,即出口*/
Push(t,temp-pos); /*入栈*/
free(temp);
while(!Empty(p))
{
temp=(LinkNode *)malloc(sizeof(LinkNode));
temp-pos=Pop(p); /*获取下一个元素*/
a=GetPop(t).x-temp-pos.x; /*左:a=0,b=1; 下:a=1,b=0*/
b=GetPop(t).y-temp-pos.y; /*右:a=0,b=-1 上:a=-1,b=0;*/
if(b==1)
temp-pos.way=1;
else if(a==1)
temp-pos.way=2;
else if(b==-1)
temp-pos.way=3;
else if(a==-1)
temp-pos.way=4;
Push(t,temp-pos); /*新位置入栈*/
free(temp);
}
printf("迷宫的路径为:\n");
printf("前两个数字表示位置,最后一个数字表示方向\n");
printf("1表示向左,2表示向下,3表示向右,4表示向上,0表示无方向\n");
while(!Empty(t)) /*输出路径*/
{
pos=Pop(t);
printf("%3d,%3d,%3d\n",pos.x,pos.y,pos.way);
}
}
int FindMaze(int **maze,int r,int l) /*寻找路径,找到返回1,没找到返回0*/
{
Stack p,q; /*栈p,q分别表示探索迷宫的路径和过程*/
P temp1,temp2;
int a,b;
InitStack(p);
InitStack(q);
temp1.x=1;
temp1.y=1; //
maze[1][1]=-1; /*标记已经走过*/
Push(p,temp1);
Push(q,temp1);
while(!Empty(q))
{
temp2=GetPop(q);
if(!(GetPop(p).x==GetPop(q).x
GetPop(p).y==GetPop(q).y))
Push(p,temp2); /*若有新元素入栈,就把q的栈顶元素存入p中*/
a=temp2.x;
b=temp2.y+1; /*当前位置左方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
a=temp2.x+1;
b=temp2.y; /*当前位置下方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
a=temp2.x;
b=temp2.y-1; /*当前位置右方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
a=temp2.x-1;
b=temp2.y; /*当前位置上方向相邻的方块*/
if(maze[a][b]==0)
{
temp1.x=a;
temp1.y=b;
maze[a][b]=-1; /*标记已走过*/
Push(q,temp1);
}
if(a==rb==l) /*到达出口*/
{
temp1.way=0;
Push(p,temp1);
PrintWay(p);
return 1;
}
if(GetPop(p).x==GetPop(q).x
GetPop(p).y==GetPop(q).y) /*若四个方向都走不通,则数据出栈,退回一格*/
{
Pop(p);
Pop(q);
}
}
return 0; /*探索迷宫失败*/
}
void main()
{
int **maze=InitMaze(); /*初始化迷宫*/
if(FindMaze(maze,row,line)) /*探索路径*/
printf("路径探索成功!\n");
else
printf("路径探索失败!\n");
getch();
}