实验一一个顺序栈的基本运算实验

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

实验一一个顺序栈的基本运算实验

一、实验目的:

对一个顺序栈的基本运算进行分析与设计,回顾数据结构所学过的知识,掌握一个顺序栈的基本运算实现,为下一步的实验奠定基础。

二、实验要求:

要求对一个顺序栈的基本运算作设计性实验,并上机运行,撰写实验报告。

三、实验内容:

一个顺序栈的数据类型表示和初始化、进栈、出栈基本运算。

四、实验环境:

Windows XP + VC++6.0开发环境。

五、实验步骤:

1、对顺序栈的知识进行复习,弄清楚栈的算法思想。

2、熟悉顺序栈的几种基本运算,即:

(1)初始化栈

int initStack(sqstack *s)

{/*创建一个空栈由指针S指出*/

if ((s=(sqstack*)malloc(sizeof(sqstack)))= =NULL) return FALSE;

s->top= -1;

return TRUE;

}

(2)入栈操作

int push(sqstack *s, Elemtype x)

{/*将元素x插入到栈s中,作为s的新栈顶*/

if(s->top>=MAXNUM-1) return FALSE; /*栈满*/

s->top++;

s->stack[s->top]=x;

return TRUE;

}

(3)出栈操作

Elemtype pop(sqstack *s)

{/*若栈s不为空,则删除栈顶元素*/

Elemtype x;

if(s->top<0) return NULL; /*栈空*/

x=s->stack[s->top];

s->top--;

return x;

}

(4)取栈顶元素操作

Elemtype gettop(sqstack *s)

{/*若栈s不为空,则返回栈顶元素*/

if(s->top<0) return NULL; /*栈空*/

return (s->stack[s->top]);

}

取栈顶元素与出栈不同之处在于出栈操作改变栈顶指针top的位置,而取栈顶元素操作不改变栈的栈顶指针.

(5)判栈空操作

int Empty(sqstack *s)

{/*栈s为空时,返回为TRUE;非空时,返回为FALSE*/

if(s->top<0) return TRUE;

return FALSE;

}

(6)置空操作

void setEmpty(sqstack *s)

{/*将栈s的栈顶指针top,置为-1*/

s->top= -1;

}

3、上机调试。

源代码如下:

#include

#include

#define MAXNUM 30

#define Elemtype int

/*定义顺序栈的存储结构*/

typedef struct

{

Elemtype stack[MAXNUM];

i nt top;

}SqStack;

/*初始化顺序栈*/

void InitStack(SqStack *p){

if(!p) printf("error");

p->top=-1;

}

/*入栈*/

void Push(SqStack *p,Elemtype x){

if(p->topstack[++p->top]=x;

e lse printf("Overflow!\n");

}

/*出栈*/

Elemtype Pop(SqStack *p){

Elemtype x;

相关文档
最新文档