栈的应用实验报告.doc

栈的应用实验报告.doc

ID:61510785

大小:33.50 KB

页数:9页

时间:2021-02-08

栈的应用实验报告.doc_第1页
栈的应用实验报告.doc_第2页
栈的应用实验报告.doc_第3页
栈的应用实验报告.doc_第4页
栈的应用实验报告.doc_第5页
资源描述:

《栈的应用实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、重庆科技学院学生实验报告课程名称算法与数据结构实验项目名称栈的实现与应用开课院系及实验室数理学院实验室I217实验日期10.10学生姓名冯帅学号专业班级应数09指导教师陈小强实验成绩教师评语:教师签字:批改时间:一、实验目的和要求1、掌握栈和队列的特点,即先进后出与先进先出的原则。2、掌握栈和队列的顺序存储结构和链式存储结构及其基本操作,以便在实际问题中灵活运用。3、掌握栈和队列的基本操作实现方法。二、实验内容1、栈的实现:用C语言实现栈,包括类型定义和各种基本运算的实现,并在此基础上设计一个主程序,测试栈的一些基本运算:(1).初始化(2).

2、入栈(3).出栈(4).取栈顶元素(5).遍历栈(6).置空栈请根据下面给出的程序(改进的顺序栈),完成这次实验,并与链栈的实现方法相比较:/*Common.h*/#defineTRUE1//逻辑,是#defineFALSE0//逻辑,否#defineOK1//状态,成功#defineFAILURE0//状态,未成功#defineERROR-1//状态,失败#defineOVERFLOW1//溢出typedefintBOOL;typedefintStatus;/*seqstack.h*/#include#include

3、lib.h>#include"common.h"#defineLIST_INIT_SIZE80//线性表存储空间的初始分配量#defineLISTINCREMENT10//线性表存储空间的分配增量typedefintElemType;//栈typedefstruct{ElemType*elem;//存储空间基址inttop;//栈顶指示intcurrentsize;//当前分配的长度}SeqStack;/*构造一个空的栈*/SeqStack*CreateStack();/*释放栈分配的空间*/voidDestroyStack(SeqStack*

4、S);/*判空*/intIsEmpty(SeqStack*S);/*入栈*/StatusPush(SeqStack*S,ElemTypee);/*出栈*/StatusPop(SeqStack*S,ElemType*e);/*取栈顶元素*/StatusGetTop(SeqStack*S,ElemType*e);/*遍历*/voidTraverse(SeqStack*S,void(*visit)(ElemType,int));/*seqstack.c*/#include#include#include"comm

5、on.h"#include"seqstack.h"/*构造一个空的栈*/SeqStack*CreateStack(){SeqStack*S=(SeqStack*)malloc(sizeof(SeqStack));if(S==NULL){exit(OVERFLOW);}S->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(S->elem==NULL){exit(OVERFLOW);}S->top=-1;S->currentsize=LIST_INIT_SIZE;returnS;

6、}/*释放栈分配的空间*/voidDestroyStack(SeqStack*S){if(S!=NULL){if(S->elem!=NULL){free(S->elem);}S->elem=NULL;}}/*判空*/intIsEmpty(SeqStack*S){returnS->top==-1;}/*入栈*/StatusPush(SeqStack*S,ElemTypee){if(S->top>=S->currentsize)//当前存储空间已满,增加分配{ElemType*newbase=(ElemType*)realloc(S->elem,(

7、S->currentsize+LISTINCREMENT)*sizeof(ElemType));if(newbase==NULL)//存储分配失败{exit(OVERFLOW);}S->elem=newbase;//新基址S->currentsize+=LISTINCREMENT;//增加存储容量}++(S->top);S->elem[S->top]=e;returnOK;}/*出栈*/StatusPop(SeqStack*S,ElemType*e){if(S->top==-1)//空栈{returnFAILURE;}(*e)=S->elem[

8、S->top];--(S->top);//表长减1returnOK;}/*取栈顶元素*/StatusGetTop(SeqStack*S,ElemTyp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。