实验报告04-顺序栈的基本操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验目的及要求:

了解和掌握顺序栈的特点;

掌握顺序栈基本操作的实现;

要求完成顺序栈的初始化、入栈、出栈、取栈顶元素、显示操作的实现。实验设备环境及要求:

PC机一台,内存要求128M以上,VC++6.0集成开发环境。

实验内容与步骤:

1、在VC++6.0环境中新建一个工程和C++文件;

2、实现顺序栈初始化、入栈、出栈、取栈顶元素算法,代码如下:

#include

#include

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

typedef char SElemType;

typedef struct

{

SElemType *base;

SElemType *top;

int stacksize;

}SqStack;

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;

}

int GetTop(SqStack S,SElemType &e)

{

if(S.top == S.base) return 0;

e = *(S.top-1);

return 1;

}

int Push(SqStack &S,SElemType e)

{

if(S.top-S.base>= S.stacksize){

S.base = (SElemType

*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

if(!S.base) return 0;

S.top = S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++ = e;

return 1;

}

int Pop(SqStack &S,SElemType &e)

{

if(S.top == S.base) return 0;

e = *--S.top;

return 1;

}

void DispStack(SqStack S) //从栈顶到栈底输出元素

{

int i;

if(S.top==S.base)printf("空栈!");

for(i=S.top-S.base; i>0; i--)

printf("%c",S.base[i-1]);

printf("\n");

}

void main()

{

SElemType e;

SqStack S;

InitStack(S);

Push(S,'A');

Push(S,'B');

Push(S,'C');

Push(S,'D');

printf("栈S为:");

DispStack(S);

GetTop(S,e);

printf("栈顶元素是:");

printf("%c\n",e);

Pop(S,e);

printf("栈S为:");

DispStack(S);

}

实验指导与数据处理:

实验结果:栈S为:DCBA

栈顶元素是:D

栈S为:CBA

分析讨论:

本次实验通过对顺序栈基本操作的实现,加深了对顺序栈特点的理解,并且熟悉了VC++6.0集成环境,虽然在调试过程中遇到一些问题,但经分析后达到了预期的结果。

相关文档
最新文档