c语言课程设计报告_数独.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言课程设计报告_数独

课程设计 数独解谜程序 2015年4月20日 目 录 一、使用资料 2 二、设计内容 11 三、详细设计说明 12 四、软件使用说明 13 五、附录:部分程序清单(带有较详细的注释) 19 使用资料 C++中栈结构建立与操作 什么是栈结构 栈结构是从数据的运算来分类的,也就是说栈结构具有特殊的运算规则,即:后进先出。 我们可以把栈理解成一个大仓库,放在仓库门口(栈顶)的货物会优先被取出,然后再取出里面的货物。 而从数据的逻辑结构来看,栈结构起始就是一种线性结构。 如果从数据的存储结构来进一步划分,栈结构包括两类: 顺序栈结构: 即使用一组地址连续的内存单元依次保存栈中的数据。在程序中,可以定义一个指定大小的结构数组来作为栈,序号为0的元素就是栈低,再定义一个变量top保存栈顶的序号即可。 链式栈结构: 即使用链表的的形式保存栈中各元素的值。链表首部(head指针所指向元素)为栈顶,链表尾部(指向地址为NULL)为栈底。 在栈结构中只能在一端进行操作,该操作端称为栈顶,另一端称为栈底。也就是说,保存和取出的数据都只能从栈结构的一端进行。从数据的运算角度来分析,栈结构是按照“后进先出”的原则处理结点数据的。 在栈结构中,只有栈顶元素是可以访问的,栈结构的数据运算也是非常简单。一般栈结构的基本操作只有两个: 入栈(Push):将数据保存到栈顶的操作。进行入栈操作前,先修改栈顶指针,使其向上移一个元素位置,然后将数据保存到栈顶指针所指的位置。 出栈(Pop):将栈顶数据弹出的操作。通过修改栈顶指针,使其指向栈中的下一个元素。 接下来,我们使用C++语言建立顺序栈,并完成顺序栈结构的基本运算 准备数据 准备在栈操作中需要用到的变量及数据结构等。 #define MAXLEN 50 struct DATA { ?string name; ?int age; }; struct StackType { ?DATA data[MAXLEN+1]; ?int top; }; 定义栈结构的长度MAXLEN,栈结构的数据元素类型DATA,以及栈结构的数据结构StackType。在数据结构StackType中,data为数据元素,top为栈顶的序号。当top=0时,表示栈为空,当top=MAXLEN时表示栈满。 数组元素都是充下标0开始的,这里为了讲述和理解方便,我们从下标1开始记录数据结点,下标0的位置不用。 初始化栈结构 在使用栈结构之前,首先需要创建一个空的顺序栈,也就是初始化顺序栈。顺序栈的初始化操作如下: (1)按照符号常量MAXLEN指定大小申请一片内存空间,用来保存栈中的数据 (2)设置栈顶指针的值为0,表示一个空栈。 示例代码如下: StackType *STInit() { ?StackType *p; ?if(p=new StackType)???//申请栈空间 ?{ ??p-top=0;?????//设置栈顶为0 ??return p;?????//返回栈顶指针 ?}? ?return NULL;? } 首先用new申请内存,然后设置栈顶为0,然后返回申请内存的首地址,申请失败返回NULL; 判断空栈 判断栈结构是否为空,如果是空栈,则表示该栈结构中没有数据,此时可以进行入栈操作,但是不可以进行出栈操作。 示例代码如下: int STIsEmpty(StackType *s) { ?int t; ?t=(s-top==0);?????//通过栈顶的值进行判断 ?return t; } 输入参数s为一个指向操作的栈的指针。根据栈顶指针top判断是否为0,判断栈是否为空。 判断满栈 判断栈结构是否为满。如果是满栈,则表示该栈结构中没有多余的空间来保存额外数据。此时不可以进行入栈操作,但是可以进行进栈操作。 示例代码如下: int STIsFull(StackType *s) { ?int t; ?t=(s-top==MAXLEN); ?return t; } 输入参数s为一个指向操作的栈的指针。根据栈顶指针top判断是否和MAXLEN相等,判断栈是否已满。 清空栈 清空栈就是栈中所有的数据被清除。 示例代码如下: void STClear(StackType *s) { ?s-top=0; } 将栈顶指针top设置为0,表示执行清空栈操作。(这里只是逻辑上将栈中数据清空,实际上只是将top设置为0,以后再添加数据会覆盖原来的数据) 释放空间 释放空间是释放栈结构所占用的内存单元,使用delete释放用new运算符申请的内存空间。 示例代码如下: void STFree(StackType *s) { ?delete s; } 在程序中直接调用delete运算符释放已分配的内存空间。一般在不需要使用栈

文档评论(0)

celkhn5460 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档