资源简介
不用递归实现迷宫问题求解
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语言实现
- 下一篇:捷联惯导解算程序
相关资源
- 基于MFC和OPENGL的五轴G代码仿真
- PDU短信解码C代码注意,仅解码
- Linux下C语言2048游戏代码
- 数据结构课程设计,飞机订票系统源
- 密码学快速取模指数算法C代码
- 二维FDTD正演C代码
- 基于GMM的说话人识别C代码
- IP TCP UDP校验和计算
- 图像处理 FFT快速傅里叶变换 C代码
- C语言算法之枚举法acm例题
- ATSHA204加密芯片资料含c代码
- 华为C语言规范-高清.pdf
- 反编译c语言的工具
- C代码注释删除工具 cmnt_rid_c
- 基于SIM7000防盗标签之IIC代码
- 控制台实现俄罗斯方块的c代码
- 离散傅里叶变换(DFT) C代码
- C语言写的把你抽签系统
- 哈夫曼编码器c代码
- 128192256 bitAES 高级加密标准 C代码
- vc代码自动生成工具
- 中值滤波算法C语言实现MidValueFilter.
- 通讯录c代码
- c代码fft计算
- 51 单片机闹钟C代码
- 矩阵运算C代码含求逆
- 自适应模糊pidC代码
- C语言实现tcp/ip网络通信
评论
共有 条评论