1 / 43
文档名称:

栈操作(实验研究报告).doc

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

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

分享

预览

栈操作(实验研究报告).doc

上传人:水中望月 2019/3/16 文件大小:130 KB

下载得到文件列表

栈操作(实验研究报告).doc

文档介绍

文档介绍::艿熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现;蚇熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。薅蚄实验要求:羈复****课本中有关栈和队列的知识;螇用C语言完成算法和程序设计并上机调试通过;羆撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。膂肁基础实验袇膃[实验1]栈的顺序表示和实现袃螀实验内容与要求:羇编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:薃(1)初始化顺序栈芁(2)插入元素薈(3)删除栈顶元素羇(4)取栈顶元素羄(5)遍历顺序栈肃(6)置空顺序栈蚁肇分析:莅栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。蒁对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top==MAXNUM-1,栈满时,不能入栈;否则出现空间溢出,引起错误,这种现象称为上溢。莀出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。膆注意:螆(1)顺序栈中元素用向量存放膃(2)栈底位置是固定不变的,可设置在向量两端的任意一个端点腿(3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置芆袃参考程序:蚁#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");膈 printf("\n1初始化顺序栈\n");蒄 printf("\n2插入一个元素\n");袀 printf("\n3删除栈顶元素\n");膁 printf("\n4取栈顶元素\n");芈 printf("\n5置空顺序栈\n");袄 printf("\n6结束程序运行\n");蚂 printf("\n--------------------------------\n");衿 printf("请输入您的选择(1,2,3,4,5,6)");莈 scanf("%d",&cord);芅 print