《数据结构》
课程设计。一、迷宫问题。
1. 表示迷宫的数据结构:
设迷宫为m 行n 列,利用maze[m][n]来表示一个迷宫,maze[m][n]=0或1;其中0表示通路,1表示不通,当从某点向下试探时,中间点有4个方向可以试探,而四个角点有2个方向,其它边缘点有3个方向,为了使所有点都有4方向可探,用maze[m+2][n+2]来表示迷宫,而迷宫的四周的值全部为1。
2. 试探方向:
每个点有四个方向去试探,如当前坐标(x,y),与其相邻的四个点的坐标都可根据与该点的相邻方向而得到,从当前位置向前试探的方向为从正东沿顺时针进行的四个方向为:(x,y+1),(x+1,y),(x,y-1),(x-1,y)。将这4个方向的坐标增量放在一个结构数组move[4]中,在move数组中,每个元素有两个域组成,x:
横坐标增量,y:纵坐标增量。
move数组如下:
typedef struct
int pop_seqstack(pseqstack s , datatype *x)
/*入口参数:顺序栈,返回值:1表示出栈成功,0表示失败。*/
if (empty_seqstack ( s )
return 0; /栈空不能出栈 */
else int mazepath(int maze[m+2][n+2],item *move,int x0,int y0)//入口参数:指向迷宫的数组,指向移动方向的指针,开始点(x0,y0),出口点(m,n),返回值1表示有路径,0表示无路径。
pseqstack s
datatype temp;
int x,y,d,i,j;
s=init_seqstack();初始化栈。
if(!s)
push_seqstack(s,temp);/迷宫入口点入栈。
printf("所走路径为:");
while(!empty_seqstack(s))
//while(!empty_seqstack(s))
destroy_seqstack(&s);/销毁栈。
return 0;
void main()
int i,j;
int s;
int maze[6+2][8+2]=,迷宫初始化。
printf("输入迷宫为:");
for(i=1;i<7;i++)
item mv[4];
mv[0].x=0;mv[0].y=1;mv[1].x=1;mv[1].y=0;
mv[2].x=0;mv[2].y=-1;mv[3].x=-1;mv[3].y=0;//四个方向初始化。
s=mazepath(maze,mv,1,1);
printf("");
for(i=1;i<7;i++)
6. 运行结果:
二、八皇后问题。
1.八皇后介绍:
在国际象棋中,皇后的势力范围包括上、下、左、右、左上、左下、右上、右下共八个方向,但每行、每列、对角线不允许出现两个皇后。
2.程序构想:
运用递归来求解八皇后问题,必须先判断传入的坐标位置是否可放置皇后。(判断该坐标上、下、左、右、左上、左下、右上、右下八个方向是否有其他的皇后,有返回0,无返回1)。
假设传入的坐标为(x,y),则:
坐标上方:(x,y-1)到(x,0)是否有其它皇后。
坐标下方:(x,y+1)到(x,8-1)是否有其它皇后。
坐标左方:(x-1,y)到(0,y)是否有其它皇后。
坐标右方:(x+1,y)到(8-1,y)是否有其它皇后。
坐标左上方:(x-1,y)到(x,0)或(0,y)是否有其它皇后。
坐标右上方:(x+1,y-1)到(x,0)或(8-1,y)是否有其它皇后。
坐标左下方:(x-1,y+1)到(x,8-1)或(0,y)是否有其它皇后。
坐标右下方:(x+1,y+1)到(x,8-1)或(8-1,y)是否有其它皇后。
递归结束条件:
当八皇后都放置成功。
递归执行部分:
判断传入的坐标是否可放置皇后,可以放置则依序递归放置下一个皇后。
3.源程序为:
#include""
#include""
char chessboard[8][8声明8×8的空白棋盘。
int queenplace(int x,int y) /判断传入坐标是否可放置皇后。
int i,j;
if(chessboard[x][y]!=x') 判断是否有皇后。
return 0;
for(j=y-1;j>=0;j判断上方是否有皇后。
if(chessboard[x][j]!=x')
return 0;
for(j=y+1;j<8;j判断下方是否有皇后。
if(chessboard[x][j]!=x')
return 0;
for(i=x-1;i>=0;i判断左方是否有皇后。
if(chessboard[i][y]!=x')
return 0;
for(i=x+1;i<8;i++)判断右方是否有皇后。
if(chessboard[i][y]!=x')
return 0;
i=x-1;
j=y-1;
while(i>=0&&j>=0) /判断左上方是否有皇后。
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...