资源简介
不用递归实现迷宫问题求解
vc6.0下运行

代码片段和文件信息
#include “stdafx.h“
#include “stack.h“
/*
打开日志文件
*/
void open_log_file(FILE *fp)
{
fp=fopen(“log_file.txt““w“);
}
/*
关闭日志文件
*/
void close_log_file(FILE *fp)
{
fclose(fp);
}
/*
迷宫情况输出
*/
void maze_situation(MAZE_PATH (*p)[ROW_LEN+2])
{
int i=0;
int j=0;
puts(“maze path is:“);
if(*p==NULL)
{
return;
}
for(i=0;i {
for(j=0;j {
printf(“%2d“p[i][j].val);
}
putchar(‘\n‘);
}
}
//初始化栈
void InitStack(SqStack **pStack int len)
{
SqStack *p=*pStack;
*pStack = (SqStack *)malloc(sizeof(SqStack));
if (NULL == *pStack)
{
return;
}
(*pStack)->stack_len = len;
(*pStack)->pbase = (MAZE_PATH *)malloc(sizeof(MAZE_PATH)*len);
if (NULL == (*pStack)->pbase)
{
return;
}
(*pStack)->pTop = (*pStack)->pbase;
}
bool IsFull(SqStack *pStack)//栈是否满
{
if((pStack->pbase+pStack->stack_len)==pStack->pTop)
{
return true;
}
else
{
return false;
}
}
bool IsEmpty(SqStack *pStack)//栈是否空
{
if(pStack->pbase==pStack->pTop)
{
return true;
}
else
{
return false;
}
}
//压栈
void push(SqStack *pStack MAZE_PATH val)
{
if (IsFull(pStack))
{
puts(“full stack“);
return;
}
*(pStack->pTop) = val;
pStack->pTop++;
}
//出栈
void pop(SqStack *pStack MAZE_PATH &val)
{
if (IsEmpty(pStack))
{
puts(“empty stack“);
return;
}
(pStack->pTop)--;
val = *(pStack->pTop);
}
/*
取栈顶元素
*/
void GetTopVal(SqStack *pStack MAZE_PATH &val)
{
MAZE_PATH *pTemp = NULL;
if (IsEmpty(pStack))
{
// puts(“empty stack“);
return;
}
pTemp = pStack->pTop-1;
val = *pTemp;
}
/*
打印栈顶数据
*/
void print_stack(SqStack *pStack)
{
MAZE_PATH val;
puts(“the path to go out is:“);
while(!IsEmpty(pStack))
{
pop(pStackval);
printf(“(%d%d)<==“val.row_posval.colu_pos);
}
putchar(‘\n‘);
}
/*
用户构建迷宫
*/
void Build_maze_path(MAZE_PATH (*p)[ROW_LEN+2])
{
int i=0;
int j=0;
int row_len=ROW_LEN;
int colu_len=COLU_LEN;
printf(“please inputs %d*%d maze path\n“row_lencolu_len);
for(i=1;i<=ROW_LEN;i++)
{
for(j=1;j<=COLU_LEN;j++)
{
(p[i]+j)->row_pos=i;
(p[i]+j)->colu_pos=j;
scanf(“%d“&((p[i]+j)->val));
}
}
}
/*
迷宫初始化
*/
void init_maze_path(MAZE_PATH (*p)[ROW_LEN+2])
{
int i=0;
int j=0;
for(i=0;i {
(p[0][i]).val=1;
(p[0][i]).stInfo->enWayState=EN_STATE_DISABLE;
}
for(j=1;j {
(p[j][0]).val=1;
(p[j][0]).stInfo->enWayState=EN_STATE_DISABLE;
}
for(i=1;i {
(p[COLU_LEN+1][i]).val=1;
(p[COLU_LEN+1][i]).stInfo->enWayState=EN_STATE_DISABLE;
}
for(j=1;j {
(p[j][ROW_LEN+1]).val=1;
(p[j][ROW_LEN+1]).stInfo->enWayState=EN_STATE_DISABLE;
}
for(i=1;i<=ROW_LEN;i++)
{
for(j=1;j<=COLU_LEN;j++)
{
(p[i]+j)->stInfo->en
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-04-04 16:18 lyq_3_31_stack\
目录 0 2013-04-03 23:22 lyq_3_31_stack\Debug\
文件 14899 2013-04-03 23:20 lyq_3_31_stack\Debug\stack.obj
文件 0 2013-04-03 23:20 lyq_3_31_stack\Debug\stack.sbr
文件 2027 2013-03-31 11:24 lyq_3_31_stack\Debug\StdAfx.obj
文件 7198 2013-03-31 11:24 lyq_3_31_stack\Debug\StdAfx.sbr
文件 107520 2013-04-03 23:20 lyq_3_31_stack\Debug\test_3_31.bsc
文件 196668 2013-04-03 23:20 lyq_3_31_stack\Debug\test_3_31.exe
文件 207888 2013-04-03 23:20 lyq_3_31_stack\Debug\test_3_31.ilk
文件 2313 2013-04-03 23:20 lyq_3_31_stack\Debug\test_3_31.obj
文件 220768 2013-03-31 11:24 lyq_3_31_stack\Debug\test_3_31.pch
文件 476160 2013-04-03 23:20 lyq_3_31_stack\Debug\test_3_31.pdb
文件 0 2013-04-03 23:20 lyq_3_31_stack\Debug\test_3_31.sbr
文件 58368 2013-04-03 23:20 lyq_3_31_stack\Debug\vc60.idb
文件 61440 2013-04-03 23:20 lyq_3_31_stack\Debug\vc60.pdb
文件 1226 2013-03-31 09:42 lyq_3_31_stack\ReadMe.txt
文件 5547 2013-04-03 23:19 lyq_3_31_stack\stack.cpp
文件 2812 2013-04-03 23:20 lyq_3_31_stack\stack.h
文件 296 2013-03-31 09:42 lyq_3_31_stack\StdAfx.cpp
文件 811 2013-03-31 11:23 lyq_3_31_stack\StdAfx.h
文件 627 2013-04-03 23:01 lyq_3_31_stack\test_3_31.cpp
文件 4692 2013-03-31 11:57 lyq_3_31_stack\test_3_31.dsp
文件 541 2013-03-31 09:42 lyq_3_31_stack\test_3_31.dsw
文件 82944 2013-04-04 16:18 lyq_3_31_stack\test_3_31.ncb
文件 49664 2013-04-04 16:18 lyq_3_31_stack\test_3_31.opt
文件 1674 2013-04-03 23:20 lyq_3_31_stack\test_3_31.plg
- 上一篇:HDB3码C语言实现
- 下一篇:捷联惯导解算程序
相关资源
- 警察抓小偷C代码
- ldpc编译码c代码
- USB识别 HID识别 MFC代码
- MFC代码大全经典+技巧
- resample函数的C语言实现
- svr-c语言和matlab代码.zip
- 数值计算 c代码及简单的MFC界面
- mcp4531 数字电位器c语言驱动和电路
- matlab转C代码
- PIC18F4520 C代码
- OGRE嵌入MFC代码以及嵌入过程说明
- VC++2010 VC上位机 20个教程 零基础 极速
- 双三次样条插值算法代码
- 聚类分析ISODATA,C代码
- 文本编辑器C代码.
- avilib库源C代码
- otsu二值化c代码
- 一种有限状态机(FSM)的实现方式
- NSGA2 C语言代码
- 飞行弹道计算C语言
- 多目标粒子群算法C代码
- 微机接口技术8255A仿真实验含C代码、
- Jacobi迭代法解方程(C语言代码)
- 国密SM2算法C代码
- 姿态解算c代码
- kcf目标跟踪C代码
- 基于MFC和OPENGL的五轴G代码仿真
- PDU短信解码C代码注意,仅解码
- Linux下C语言2048游戏代码
- 数据结构课程设计,飞机订票系统源
评论
共有 条评论