TCU_ZzR_实验3 栈和队列

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

数据结构A

班级:软件二班

学号:1607070212 姓名:张曾然

日期:2017/10/25

实验三栈、队列的实现及简单应用

一、实验目的

1.熟悉理解栈和队列的基本操作。

2.会使用栈和队列的基本操作求解一些实际问题。

二、实验要求

1.根据布置的作业编写源程序,上机验证实验结果;

2.独立做实验,输入、调试所编程序;

3.实验结束后,根据实验报告模板编写实验报告。

三、实验内容和步骤

用Visual C++作为实验开发环境,创建一个Win32 Console Application工程,工程名为你的学号,添加下面文件:

(1)数据结构定义:以seqStackDef.h和cirQueueDef.h为文件名;

(2)基本操作和算法:以seqStackAlgo.h和cirQueueAlgo.h为文件名;

(3)调用基本操作和实现应用的主程序:以stackQueueMain.cpp为文件名。

编写程序完成下列功能,文件seqStackDef.h定义顺序栈的结构体,文件cirQueueDef.h 定义循环队列的结构体,文件seqStackAlgo.h实现栈在下面应用中所需的基本操作,文件cirQueueAlgo.h实现队列在下面应用中所需的基本操作,文件stackQueueMain.cpp中编写以下算法:

源程序:

seqStackDef.h:

#define MAXSIZE 1024 //顺序栈最大长度

typedef char elemtype;//elemtype可以为任意类型,假设为int

typedef struct SequenStack

{

elemtype data[MAXSIZE];//将顺序栈定义为一维数组

int top;

}SequenStack; //顺序栈的结构类型为SequenStack

seqStackAlgo.h:

SequenStack * Init_SequenStack()//申请内存空间

{

SequenStack *S;

S=(SequenStack *) malloc (sizeof(SequenStack));

return S;

}

int SequenStack_Empty(SequenStack *S)//判断栈空

{

if(S->top==-1)

return 1;

else

return 0;

}

int SequenStack_Full(SequenStack *S)//判断栈满

{

if(S->top+1==MAXSIZE)

return 1;

else

return 0;

}

int SequenStack_Length(SequenStack *S)//取顺序栈的长度

{

return(S->top+1);

}

int Push_SequenStack(SequenStack *S,elemtype x)//入栈操作{

if(S->top>=MAXSIZE-1)

{

printf("overflow\n");

return 0;

}

S->top++;

S->data[S->top]=x;

return 1;

}

int Pop_SequenStack(SequenStack *S,elemtype *x)//出栈操作{

if(S->top==-1)

{

printf("overflow\n");

return 0;

}else

{

*x=S->data[S->top];

S->top--;

return 1;

}

}

int GetTop_SequenStack(SequenStack *S,elemtype *x)//取栈顶元素{

if(S->top==-1)

{

printf("overflow\n");

return 0;

}

else

{

*x=S->data[S->top];

return 1;

}

}

cirQueueDef.h:

#define MAXSIZE 1024

//顺序队列最大长度

typedef char elemtype;

typedef struct SequenQueue

{

elemtype data[MAXSIZE];

int front; //定义头指针

int rear; //定义尾指针

}SequenQueue;

cirQueueAlgo.h:

SequenQueue * Init_SequenQueue()//初始化队列

{

SequenQueue *Q;

Q=(SequenQueue *)malloc(sizeof(SequenQueue));

Q->front=0;

Q->rear=0;

return Q;

}

int SequenQueue_Empty(SequenQueue *Q)//判断队空{

if(Q->front==Q->rear)

{return 1;}//空

else

{return 0;}//不空

}

int SequenQueue_Full(SequenQueue *Q)//判断队满{

if((Q->rear+1)%MAXSIZE==Q->front)

{return 1;}

else

{return 0;}

}

int SequenQueue_Length(SequenQueue *Q)//取队列长度

相关文档
最新文档