马踏棋盘_实验报告

西安交通大学实验报告

课程 数据结构专题实验 实验名称 马踏棋盘 第 1 页 共 9 页

系别__ 自动化 实 验 日 期 2015 年 11 月 8 日

专业班级 自动化43班 实 验 报 告 日 期 2015 年 11月 15 日

姓 名 李欣阳 学号 2140504066 报 告 退 发 ( 订正 、 重做 )

同 组 人 无 教 师 审 批 签 字

一、实验目的

通过本次试验,熟练掌握抽象数据类型栈和队列的实现,学会用栈和队列解决具体应用问题,从而体会栈和队列的特点。

二、实验内容与要求

设计一个国际象棋的马踏棋盘的演示程序,满足:将马随机放在国际象棋8×8棋盘Broad[8][8]的某方格中,马按走棋规则进行移动。可以允许回溯,最终成功走遍棋盘上64个方格。编制非递归程序,求出马的行走路线,按求出的行走路线,将数字1,2,3,···,648×8方阵,并输出该方阵。

三、问题分析

3.1 下一个位置的确定

一般来说,当马处于位置( i ,j )时,可以走到下列八个位置之一,这些位置称之为该位置的邻接位置:

( i-2,j+1 ),( i-1,j+2 ),( i+1,j+2 ),( i +2,j+1 )

( i+2,j+1 ),( i+1,j -2),( i-1,j-2 ),( i-2,j -1 )

给以上八个位置依次编号,在棋盘上显示如下图:

⑧①⑦②Δ⑥③⑤④图1 某位置的八个邻接位置

但是如果( i ,j )靠近 -2,-1,1,2,2,1,-1,-2}

HTry2[8]={ 1,2,2,1,-1,-2,-2,-1}

位于( i ,j )的马可以走到的新位置是在棋盘范围内的|”,并在每行输出完成之后,额外输出一行“--”即可,输出表格线时要根据具体情况调整“--”的数目即可。

动态演示的实现需要每一步都输出一次步数标记数组Init1,间隔时间调用Sleep函数。由于Init1的初始化是所有元素赋值为零,在输出该数组时难免出现没走过的空位置显示为零的情况。因此为了使输出结果简洁美观,在输出数组之前先通过if语句把所有为零的位置(尚未走过的位置)转化为空格后再输出,而非零的位置原样输出即可。

四、栈结构及基本操作

4.1 栈的说明及抽象数据类型

本实验采用栈这一线性数据结构来实现,栈是限定仅在表尾进行插入或者删除操作的线性表,表尾称为栈顶,表头称为栈底。栈的抽象数据类型及基本操作定义如下:

ADT Stack{数据对象:D={ai|ai∈ElemSet, i=1,2, …,n, n≥0}数据关系:R1={|ai-1,ai∈D, i=1,2, …,n } 约定an端为栈顶,a1端为栈底。

基本操作:InitStack( &S )

操作结果:构造一个空栈S。

DestroyStack ( S )

初始条件:栈S已存在。

操作结果:栈S被销毁。

Push( &S, e )初始条件:栈S已存在。

操作结果:插入元素e为新的栈顶元素。Pop( &S, &e )

初始条件:栈S已存在且非空。操作结果:删除S的栈顶元素,并用e返回其值。

StackEmpty ( S )

初始条件:栈S已存.

操作结果:若栈S非空则返回TURE,否则返回FALSE。

}ADT Stack

4.2 顺序栈的定义

栈的顺序存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时设定指针top指示栈顶元素在顺序栈中的位置。顺序栈的存数示意图及C语言定义为:

typedef struct{

int stacksize;

SElemType *base;

SElemType *top;

}SqStack;//顺序栈结构体

4.3顺序栈基本操作的算法描述

(1)栈的初始化:生成一个规定大小的空表,表尾表示栈顶,表头表示栈底。

int InitStack(SqStack &S){

S.base = (SElemType*)malloc(STACK_INIT_SIZE * sizeof(SElemType));

if(!S.base) return 0;

S.top = S.base;

S.stacksize = STACK_INIT_SIZE;

return 1;

}//栈的初始化

(2)入栈操作:将元素x压入栈的top中,即顺序表表尾增加一个节点,

马踏棋盘c语言实验报告,马踏棋盘_实验报告.doc相关推荐

  1. 计算机网络符号意思,浅析网络语言中的符号网语_计算机网络论文.doc

    浅析网络语言中的符号网语_计算机网络论文.doc 浅析网络语言中的符号网语_计算机网络论文 浅析网络语言中的符号网语_计算机网络论文 论文关键词:符号网语特征成因规范 论文摘要:随着网络的普及,网络语 ...

  2. python数据分析报告的格式范文_数据分析报告格式

    如果对您有帮助!感谢评论与分享 数据分析报告格式 导读 :本文 数据分析报告格式 ,仅供参考,如果觉得很不错,欢迎点 评和分享. 数据分析报告格式 分析报告的输出是是你整个分析过程的成果,是评定一个产 ...

  3. python实验心得体会范文大全_实验心得体会四篇

    实验心得体会四篇 <实验心得体会四篇>是一篇好文章,感觉写的不错,这里给大家转摘到, 觉得好就请收藏下. 小编精心推荐 | | 下面是小编整理的实验,欢迎阅读参考. 实验心得体会 ( 一 ...

  4. python编程实验报告收获与体会_实验报告个人心得体会(20篇)

    实验报告个人心得体会 第 1 篇: 在做 XXX 的实验前,我以为不会难做,就像以前做物理实验一样,做完实验,然后两下 子就将实验报告做完.直到做完测试实验时,我才明白其实并不容易做,但学到的知识与难 ...

  5. 大连计算机职业学校校长宋作德,《语文课程标准》(实验稿)的思考_语文论文.doc...

    <语文课程标准>(实验稿)的思考_语文论文_范文先生网 <语文课程标准>(实验稿)的思考 江苏 朱学坤 先从感性直觉上讲,在未看到<语文课程标准>之前,基于对外国课 ...

  6. python报告的创新点_工作报告之论文开题报告创新点

    论文开题报告创新点 [篇一:如何选题开题如何找创新点] 如何选题开题,如何找到创新点? 创新难,难创新,首先就是要找到创新的点,才能想实现创新的途 径和方法.我觉得可以从如何几个方面: 1 .科研扫盲 ...

  7. mysql实验五索引和数据完整性_实验六 索引和数据完整性约束

    实验六索引和数据完整性约束 一.实验内容: 1. 索引的创建 2. 数据完整性约束的创建 二.实验项目:员工管理数据库 用于企业管理的员工管理数据库,数据库名为YGGL中,YGGL数据库中包括三个表: ...

  8. python数据分析报告的格式范文_数据分析报告怎么写 数据分析报告格式范文

    数据分析报告格式范文 目录 第一章 项目概述 此章 包括项目介绍.项目背景介绍.主要技术经济指标.项目存在问题及推荐等. 第二章 项目市场研究分析 此章 包括项目外部环境分析.市场特征分析及市场竞争结 ...

  9. 数据分析专题报告范文6篇_专题报告格式及范文(共6篇).doc

    专题报告格式及范文(共6篇) 专题报告格式及范文(共6篇) XXXXXX 英文 作者姓名四号仿宋,中间全角逗号隔开 英文姓名五号Times New Roman,标点半角,姓大写,名首字母大写两字之间用 ...

  10. c语言数据结构之马踏棋盘

    c语言数据结构之马踏棋盘 马踏棋盘游戏 (一)思路: 马随机放在国际象棋的 8×8 棋盘 Board[07][07]的某个方格中,马按走棋规则进行移动.要求每个方格只进入一次,走遍棋盘上全部 64 个 ...

最新文章

  1. [JAVA EE] 内联用法
  2. 用VS2005开发Sharepoint工作流,出现此安装不支持该项目类型。的处理
  3. 删除弹出提示框_MVC
  4. 主mysql删除从服务不同步_MySQL主从不同步解决
  5. MySQL 请选择合适的列!
  6. 机器学习第十篇:如何评价模型效果评估
  7. django orm 操作表
  8. 机器学习中数据预处理的几种方法
  9. 解决 最新版 mac 系统 无法使用未签名第三驱动(绿联usb网卡不正常)
  10. RecyclerView 报Scrapped or attached views may not be recycled. as Scrap:false isAttached:true异常
  11. 蓝桥杯李白打酒php,蓝桥杯:李白打酒
  12. wps excel 中将一行多列数据转换为一行两列的格式 的方法函数
  13. C++仿照标准字符串类string,设计一个自己的字符串类String
  14. Java-根据IP获取对应位置信息
  15. 用DownSub 导出TED和youtube字幕
  16. Codeforces 1215 A. Yellow Cards
  17. HTML文件里开头的!Doctype有什么作用?
  18. Python 布尔类型 bool
  19. JAVA获取中文名字的首字母
  20. laraveladmin省市区三级联动

热门文章

  1. ArchLinux搭建高效便捷的平铺式桌面
  2. HTML基础标签和框架结构
  3. 从头开始学习python自动化(四)编写框架
  4. SLAM14讲-ch6/g2o_curve_fitting
  5. 【笔记】Git 常用命令速查表
  6. HDU.1282回文数猜想(C++的函数运用)
  7. Object.keys()的使用方法
  8. 基于java的聊天工具_[源码和文档分享]基于java 的仿QQ聊天工具
  9. MYSQL·其四·SELECT,
  10. CSU 1976: 搬运工小明(二分)