欢迎来到天天文库
浏览记录
ID:6781414
大小:366.50 KB
页数:28页
时间:2018-01-25
《c语言课程设计报告-数独解谜程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程设计设计题目数独解谜程序学生姓名学号专业班级指导教师2015年4月20日目录一、使用资料2二、设计内容11三、详细设计说明12四、软件使用说明13五、附录:部分程序清单(带有较详细的注释)1927使用资料C++中栈结构建立与操作什么是栈结构栈结构是从数据的运算来分类的,也就是说栈结构具有特殊的运算规则,即:后进先出。我们可以把栈理解成一个大仓库,放在仓库门口(栈顶)的货物会优先被取出,然后再取出里面的货物。而从数据的逻辑结构来看,栈结构起始就是一种线性结构。如果从数据的存储结构来进一步划分,栈结构包括两类:顺序栈结构:即使用一组地址连续的内存单元依次保存栈中的数据。在程序中,
2、可以定义一个指定大小的结构数组来作为栈,序号为0的元素就是栈低,再定义一个变量top保存栈顶的序号即可。链式栈结构:即使用链表的的形式保存栈中各元素的值。链表首部(head指针所指向元素)为栈顶,链表尾部(指向地址为NULL)为栈底。在栈结构中只能在一端进行操作,该操作端称为栈顶,另一端称为栈底。也就是说,保存和取出的数据都只能从栈结构的一端进行。从数据的运算角度来分析,栈结构是按照“后进先出”的原则处理结点数据的。27在栈结构中,只有栈顶元素是可以访问的,栈结构的数据运算也是非常简单。一般栈结构的基本操作只有两个:入栈(Push):将数据保存到栈顶的操作。进行入栈操作前,先修改
3、栈顶指针,使其向上移一个元素位置,然后将数据保存到栈顶指针所指的位置。出栈(Pop):将栈顶数据弹出的操作。通过修改栈顶指针,使其指向栈中的下一个元素。接下来,我们使用C++语言建立顺序栈,并完成顺序栈结构的基本运算准备数据准备在栈操作中需要用到的变量及数据结构等。#defineMAXLEN50structDATA{ stringname; intage;};structStackType{ DATAdata[MAXLEN+1]; inttop;};27定义栈结构的长度MAXLEN,栈结构的数据元素类型DATA,以及栈结构的数据结构StackType。在数据结构StackType
4、中,data为数据元素,top为栈顶的序号。当top=0时,表示栈为空,当top=MAXLEN时表示栈满。数组元素都是充下标0开始的,这里为了讲述和理解方便,我们从下标1开始记录数据结点,下标0的位置不用。初始化栈结构在使用栈结构之前,首先需要创建一个空的顺序栈,也就是初始化顺序栈。顺序栈的初始化操作如下:(1)按照符号常量MAXLEN指定大小申请一片内存空间,用来保存栈中的数据(2)设置栈顶指针的值为0,表示一个空栈。示例代码如下:StackType*STInit(){ StackType*p; if(p=newStackType) //申请栈空间 { p->top=0;
5、 //设置栈顶为0 returnp; //返回栈顶指针 } 27 returnNULL; }首先用new申请内存,然后设置栈顶为0,然后返回申请内存的首地址,申请失败返回NULL;判断空栈判断栈结构是否为空,如果是空栈,则表示该栈结构中没有数据,此时可以进行入栈操作,但是不可以进行出栈操作。示例代码如下:intSTIsEmpty(StackType*s){ intt; t=(s->top==0); //通过栈顶的值进行判断 returnt;}输入参数s为一个指向操作的栈的指针。根据栈顶指针top判断是否为0,判断栈是否为空。判断满栈判断栈结构是否为满。如
6、果是满栈,则表示该栈结构中没有多余的空间来保存额外数据。此时不可以进行入栈操作,但是可以进行进栈操作。示例代码如下:27intSTIsFull(StackType*s){ intt; t=(s->top==MAXLEN); returnt;}输入参数s为一个指向操作的栈的指针。根据栈顶指针top判断是否和MAXLEN相等,判断栈是否已满。清空栈清空栈就是栈中所有的数据被清除。示例代码如下:voidSTClear(StackType*s){ s->top=0;}将栈顶指针top设置为0,表示执行清空栈操作。(这里只是逻辑上将栈中数据清空,实际上只是将top设置为0,以后再添加数据会
7、覆盖原来的数据)释放空间释放空间是释放栈结构所占用的内存单元,使用delete释放用new运算符申请的内存空间。示例代码如下:27voidSTFree(StackType*s){ deletes;}在程序中直接调用delete运算符释放已分配的内存空间。一般在不需要使用栈结构时调用该函数,特别是在程序结束的时候。入栈入栈(Push)是栈结构的基本操作,主要操作是将数据元素保存到栈结构。入栈操作的具体步骤如下:(1)首先判断栈顶top,如果top大于等于MAXLEN,则表示溢出,进
此文档下载收益归作者所有