c语言课程设计报告_数独(2)

2018-12-29 23:18

return NULL; }

首先用new申请内存,然后设置栈顶为0,然后返回申请内存的首地址,申请失败返回NULL;

判断空栈

判断栈结构是否为空,如果是空栈,则表示该栈结构中没有数据,此时可以进行入栈操作,但是不可以进行出栈操作。

示例代码如下:

int STIsEmpty(StackType *s) { int t;

t=(s->top==0); //通过栈顶的值进行判断 return t; }

输入参数s为一个指向操作的栈的指针。根据栈顶指针top判断是否为0,判断栈是否为空。

判断满栈

判断栈结构是否为满。如果是满栈,则表示该栈结构中没有多余的空间来保存额外数据。此时不可以进行入栈操作,但是可以进行进栈操作。

示例代码如下:

5

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运算符申请的内存空间。

6

示例代码如下:

void STFree(StackType *s) { delete s; }

在程序中直接调用delete运算符释放已分配的内存空间。一般在不需要使用栈结构时调用该函数,特别是在程序结束的时候。

入栈

入栈(Push)是栈结构的基本操作,主要操作是将数据元素保存到栈结构。入栈操作的具体步骤如下:

(1)首先判断栈顶top,如果top大于等于MAXLEN,则表示溢出,进行出错处理。否则执行以下操作。

(2)设置top=top+1(栈顶指针加1,指向入栈地址)

(3)将入栈呀U尿素保存到top指向的位置。

示例代码如下:

int PushST(StackType *s,DATA data) {

if((s->top+1)>MAXLEN)

7

{

cout<<\栈溢出\ return 0; }

s->data[++s->top]=data; //将元素压入栈 return 1; }

输入参数s为一个指向操作的栈的指针,输入参数data是需要入栈的数据元素。程序首先判断栈是否溢出,如果溢出就给出警告,不进行入栈操作,否则修改栈顶指针,即top先加1,然后将data放到top现在指向的数据单元。

出栈

出栈(Pop)是占据诶狗的基本操作,主要操作与入栈相反,它是从栈顶弹出一个数据元素,出栈操作的具体步骤如下:

(1)首先判断栈顶top,如果top等于0,则表示为恐慌在哪,进行出错处理。否则执行下面的操作。

(2)将栈顶指针top所指向的位置的元素返回(实际是返回的指针)

(3)将top的减1,指向栈的下一个元素,原来栈顶的元素被弹出。

DATA * PopST(StackType *s) {

8

if(s->top==0) {

cout<<\栈为空,不能再输出!\ exit(0); }

return &(s->data[s->top--]); }

当栈中有数据时,该函数返回值是一个指向DATA类型数据的指针。

读取点结构

读取点结构也就是读取栈结构中结点的数据。由于栈结构只能在一端进行操作,因此这里的读操作其实就是读站点的数据。

需要注意的是,读节点数据的操作和出栈操作不同。读结点操作仅仅是显示栈顶结点数据的内容,而出栈操作则将栈顶数据弹出。

示例代码如下:

DATA *PeekST(StackType *s) {

if(s->top==0) {

cout<<\栈已空\

9


c语言课程设计报告_数独(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新视野英语一级试题及答案3

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: