欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构栈和队列实验报告.doc

    • 资源ID:251336       资源大小:99.85KB        全文页数:11页
    • 资源格式: DOC        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构栈和队列实验报告.doc

    1、一、实验目的和要求(1)理解栈和队列的特征以及它们之间的差异,知道在何时使用那种数据结构。(2)重点掌握在顺序栈上和链栈上实现栈的基本运算算法,注意栈满和栈空的条件。(3)重点掌握在顺序队上和链队上实现队列的基本运算算法,注意循环队队列满和队空的条件。(4)灵活运用栈和队列这两种数据结构解决一些综合应用问题。二、实验环境和方法实验方法:(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。(三)根据实验内容,编译程序。实验环境:Windows xp Visual C+6.0三、实验内容及过程描述实

    2、验步骤: 进入Visual C+ 6.0集成环境。 输入自己编好的程序。 检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。实验内容:编译以下题目的程序并调试运行。1)、编写一个程序algo3-1.cpp,实现顺序栈的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)初始

    3、化栈s;(2)判断栈s是否非空;(3)依次进栈元素a,b,c,d,e;(4)判断栈s是否非空;(5)输出出栈序列;(6)判断栈s是否非空; (7)释放栈。 图3.1 Proj3_1 工程组成本工程Proj3_1的组成结构如图3.1所示。本工程的模块结构如图3.2所示。图中方框表示函数,方框中指出函数名,箭头方向表示函数间的调用关系。mainInitStackDestroyStackStackEmptyPushPopGetTop图3.2 Proj3_1工程的程序结构图其中包含如下函数:InitStack(SqStack *&s)/初始化栈SDestroyStack(SqStack *&s)/销毁

    4、栈sStackEmpty(SqStack *s)/判断栈空Push(SqStack *&s,ElemType e)/进栈Pop(SqStack *&s,ElemType &e)/出栈GetTop(SqStack *s,ElemType &e)/取栈顶元素 对应的程序如下: /文件名:algo3-1.cpp#include #include #define MaxSize 100typedef char ElemType;typedef struct ElemType dataMaxSize;int top;/栈顶指针 SqStack;void InitStack(SqStack *&s)/初始

    5、化栈Ss=(SqStack *)malloc(sizeof(SqStack);s-top=-1;/栈顶指针置为-1void DestroyStack(SqStack *&s)/销毁栈sfree(s);bool StackEmpty(SqStack *s)/判断栈空return(s-top=-1);bool Push(SqStack *&s,ElemType e)/进栈if (s-top=MaxSize-1)/栈满的情况,即栈上溢出return false;s-top+;/栈顶指针增1s-datas-top=e;/元素e放在栈顶指针处return true;bool Pop(SqStack *&

    6、s,ElemType &e)/出栈if (s-top=-1)/栈为空的情况,即栈下溢出return false;e=s-datas-top;/取栈顶指针元素的元素s-top-;/栈顶指针减1return true; bool GetTop(SqStack *s,ElemType &e)/取栈顶元素if (s-top=-1)/栈为空的情况,即栈下溢出return false;e=s-datas-top;/取栈顶指针元素的元素return true;设计exp3-1.cpp程序如下/文件名:exp3-1.cpp#include #include #define MaxSize 100typedef

    7、 char ElemType;typedef struct ElemType dataMaxSize;int top;/栈顶指针 SqStack;extern void InitStack(SqStack *&s);extern void DestroyStack(SqStack *&s);extern bool StackEmpty(SqStack *s);extern bool Push(SqStack *&s,ElemType e);extern bool Pop(SqStack *&s,ElemType &e);extern bool GetTop(SqStack *s,ElemTyp

    8、e &e);void main()ElemType e;SqStack *s;printf(栈s的基本运算如下:n);printf( (1)初始化栈sn);InitStack(s);printf( (2)栈为%sn,(StackEmpty(s)?空:非空);printf( (3)依次进栈元素a,b,c,d,en);Push(s,a);Push(s,b);Push(s,c);Push(s,d);Push(s,e);printf( (4)栈为%sn,(StackEmpty(s)?空:非空);printf( (5)出栈序列:);while (!StackEmpty(s)Pop(s,e);printf

    9、(%c ,e);printf(n);printf( (6)栈为%sn,(StackEmpty(s)?空:非空);printf( (7)释放栈n);DestroyStack(s);运行结果如下:2)、编写一个程序algo3-2.cpp,实现链栈的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)初始化链栈s;(2)判断链栈s是否非空;(3)依次进栈a,b,c,d,e;(4)判断链栈s是否非空;(5)输出链栈长度;(6)输出从栈底到栈顶元素;(7)输出出队序列;(8)判断链栈s是否非空; 图3.3 Proj3_2工程组成(9)释放队列。本工程Proj3_2的组成结构如图3.3所示。本工

    10、程的模块结构如图3.4所示。图中方框表示函数,方框中指出函数名,箭头方向表示函数间的调用关系。mainInitStackDestroyStackStackEmptyPushPopGetTop 图3.4 Proj3_2工程的程序结构图其中包含如下函数:InitStack(LiStack *&s)/初始化栈s DestroyStack(LiStack *&s)/销毁栈StackEmpty(LiStack *s)/判断栈是否为空Push(LiStack *&s,ElemType e)/进栈Pop(LiStack *&s,ElemType &e)/出栈GetTop(LiStack *s,ElemTyp

    11、e &e)/取栈顶元素对应的程序如下:/文件名:algo3-2.cpp#include #include typedef char ElemType;typedef struct linknodeElemType data;/数据域ElemType data;/数据域struct linknode *next;/指针域 LiStack;void InitStack(LiStack *&s)/初始化栈ss=(LiStack *)malloc(sizeof(LiStack);s-next=NULL;void DestroyStack(LiStack *&s)/销毁栈LiStack *p=s,*q=

    12、s-next;while (q!=NULL)free(p);p=q;q=p-next;free(p);/此时p指向尾节点,释放其空间bool StackEmpty(LiStack *s)/判断栈是否为空return(s-next=NULL);void Push(LiStack *&s,ElemType e)/进栈LiStack *p;p=(LiStack *)malloc(sizeof(LiStack);p-data=e;/新建元素e对应的节点*pp-next=s-next;/插入*p节点作为开始节点s-next=p;bool Pop(LiStack *&s,ElemType &e)/出栈Li

    13、Stack *p;if (s-next=NULL)/栈空的情况return false;p=s-next;/p指向开始节点e=p-data;s-next=p-next;/删除*p节点free(p);/释放*p节点return true;bool GetTop(LiStack *s,ElemType &e)/取栈顶元素if (s-next=NULL)/栈空的情况return false;e=s-next-data;return true;设计 exp3-2.cpp 主程序/文件名:exp3-2.cpp#include #include typedef char ElemType;typedef struct linknodeElemType data;/数据域struct linknode *next;/指针域 LiStack;extern void InitSta


    注意事项

    本文(数据结构栈和队列实验报告.doc)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开