实验三 栈和队列指导书

实验三 栈和队列指导书

ID:39575878

大小:195.00 KB

页数:22页

时间:2019-07-06

实验三 栈和队列指导书_第1页
实验三 栈和队列指导书_第2页
实验三 栈和队列指导书_第3页
实验三 栈和队列指导书_第4页
实验三 栈和队列指导书_第5页
资源描述:

《实验三 栈和队列指导书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验三栈和队列3.1实验目的:(1)熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现;(2)熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。3.2实验要求:(1)复习课本中有关栈和队列的知识;(2)用C语言完成算法和程序设计并上机调试通过;(3)撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程

2、序运行结果(必要时给出多种可能的输入数据和运行结果)。3.3基础实验[实验1]栈的顺序表示和实现实验内容与要求:编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈分析:栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top==MAXNUM-1,栈满时,不能入栈;否则出现空间溢出,引起错误,这种现象称为上溢。出栈和读栈顶

3、元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。注意:(1)顺序栈中元素用向量存放(2)栈底位置是固定不变的,可设置在向量两端的任意一个端点(3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置参考程序:#include#include#defineMAXNUM2022#defineElemTypeint/*定义顺序栈的存储结构*/typedefstruct{ElemTypest

4、ack[MAXNUM];inttop;}SqStack;/*初始化顺序栈*/voidInitStack(SqStack*p){if(!p)printf("Eorror");p->top=-1;}/*入栈*/voidPush(SqStack*p,ElemTypex){if(p->toptop=p->top+1;p->stack[p->top]=x;}elseprintf("Overflow!");}/*出栈*/ElemTypePop(SqStack*p){ElemTypex;i

5、f(p->top!=0){x=p->stack[p->top];printf("以前的栈顶数据元素%d已经被删除!",p->stack[p->top]);p->top=p->top-1;return(x);}else{printf("Underflow!");return(0);}}/*获取栈顶元素*/ElemTypeGetTop(SqStack*p){ElemTypex;if(p->top!=0){x=p->stack[p->top];return(x);}else{printf("Underfl

6、ow!");22return(0);}}/*遍历顺序栈*/voidOutStack(SqStack*p){inti;printf("");if(p->top<0)printf("这是一个空栈!");printf("");for(i=p->top;i>=0;i--)printf("第%d个数据元素是:%6d",i,p->stack[i]);}/*置空顺序栈*/voidsetEmpty(SqStack*p){p->top=-1;}/*主函数*/main(){SqStack*q;inty,cord

7、;ElemTypea;do{printf("");printf("第一次使用必须初始化!");printf("");printf("主菜单");printf("1初始化顺序栈");printf("2插入一个元素");printf("3删除栈顶元素");printf("4取栈顶元素");printf("5置空顺序栈");printf("6结束程序运行");printf("--------------------------------

8、");printf("请输入您的选择(1,2,3,4,5,6)");scanf("%d",&cord);printf("");switch(cord){case1:{q=(SqStack*)malloc(sizeof(SqStack));InitStack(q);OutStack(q);}break;case2:22{printf("请输入要插入的数据元素:a=");scanf("%d",&a);Push(q

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

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

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