1 / 52
文档名称:

实验二栈和队列(基本操作).doc

格式:doc   大小:115KB   页数:52
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验二栈和队列(基本操作).doc

上传人:花花世界 2019/4/11 文件大小:115 KB

下载得到文件列表

实验二栈和队列(基本操作).doc

文档介绍

文档介绍:膂蕿蝿实验二栈和队列膄螄衿1、实验目的:蚁艿膅熟悉栈的特点<先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现;b5E2RGbCAP膅袂薁熟悉队列的特点<先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。p1EanqFDPw肁肀袂2、实验要求:芇芄罿复习课本中有关栈和队列的知识;蒀螀薆用C语言完成算法和程序设计并上机调试通过;肄莃莃撰写实验报告,给出算法思路或流程图和具体实现<源程序)、算法分析结果<包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果<必要时给出多种可能的输入数据和运行结果)。DXDiTa9E3d罿薀薀3、实验内容肆螅聿[实验1]栈的顺序表示和实现薃肇羆实验内容与要求:膇袃螁编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:肂螇荿<1)初始化顺序栈羄羂聿<2)插入元素蒂蒇莇<3)删除栈顶元素肆莄蒃<4)取栈顶元素袁芈莂<5)遍历顺序栈肇蒃腿<6)置空顺序栈莀羈蒄分析:袄袅膅栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。螀蝿膁对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top==MAXNUM-1,栈满时,不能入栈。否则出现空间溢出,引起错误,这种现象称为上溢。RTCrpUDGiT羆羃芈出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。蒃葿袅注意:羇肂蚃<1)顺序栈中元素用向量存放袂艿羀<2)栈底位置是固定不变的,可设置在向量两端的任意一个端点螅蒄莈<3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top<通常称top为栈顶指针)来指示当前栈顶位置5PCzVD7HxA节羀芆参考程序:袆薂莅#include<>螁螀虿#include<>袇羅蒈#defineMAXNUM20膁蒁蚇#defineElemTypeint蚅肃袃/*定义顺序栈的存储结构*/袄膁螂typedefstruct肀蒆薈{ ElemTypestack[MAXNUM]。芃羁袄 inttop。肂螈薅}SqStack。羇蚂蒁/*初始化顺序栈*/衿袆蚈voidInitStack(SqStack*p>莆蒂芅{ if(!p>羀艿羂 printf("Eorror">。螅膂艿 p->top=-1。羂莇蚈}芅羃蚅/*入栈*/蝿螀螄voidPush(SqStack*p,ElemTypex>蚄蚃节{ if(p->top<MAXNUM-1>袀袈螈 { p->top=p->top+1。肄莄肆 p->stack[p->top]=x。羂羆膂 }螇膄肁 else虿荿袈 printf("Overflow!\n">。芆袄蒇}螁蒇袄/*出栈*/蚆莁袀ElemTypePop(SqStack*p>袂衿羇{ ElemTypex。肅膁薄 if(p->top!=0>虿羈莂 { x=p->stack[p->top]。蒄袁虿 printf("以前的栈顶数据元素%d已经被删除!\n",p->stack[p->top]>。蚁肆肇 p->top=p->top-1。羄薂羅 return(x>。螂葿肄 }莃莂蚂 else蕿薇膇 { printf("Underflow!\n">。肇肃莆 return(0>。薁罿蒂 }蒆袃蒁}莈肈芇/*获取栈顶元素*/袅薃螇ElemTypeGetTop(SqStack*p>蒀膆芄{ ElemTypex。莅莄膀 if(p->top!=0>薁薈芇 { x=p->stack[p->top]。螄肄膈 return(x>。芈蚇蚁 }膃螄芃 else莀聿莇 { printf("Underflow!\n">。袇芁莄 return(0>。蒁膇莃 }芆肁羁}芈芆蒇/*遍历顺序栈*/螆螂螅voidOutStack(SqStack*p>芀蚈膅{ inti。膅薂螀 printf("\n">。莁螇薇 if(p->top<0>薄节膆 printf("这是一个空栈!">。腿聿薃 printf("\n">。羄羃蕿 for(i=p->top。i>=0。i-->膀芇蚆 printf("第%d个数据元素是:%6d\n",i,p->stack[i]>。蚇螃薇}芁莆芅/*置空顺序栈*/膆蒃薂voidsetEmpty(SqStack*p>聿蚈螆{薆芄蚄p->top=-1。肀袆螃}羅羄莁/*主函数*/膁腿螆main(>莅螅肅{SqStack*q。罿芇蒅 inty,cord。ElemTypea。袄膁肀 do{肀蒆膀 printf("\n">。芃羁蒆 printf("第一次使用必须初始化!\n">。肂螈羃 printf("\n">。羇蚂膃 printf("\n主菜单\n">。衿袆