2022年栈的顺序和链式存储的表示和实现 .pdf

上传人:H****o 文档编号:39900073 上传时间:2022-09-08 格式:PDF 页数:7 大小:50.07KB
返回 下载 相关 举报
2022年栈的顺序和链式存储的表示和实现 .pdf_第1页
第1页 / 共7页
2022年栈的顺序和链式存储的表示和实现 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年栈的顺序和链式存储的表示和实现 .pdf》由会员分享,可在线阅读,更多相关《2022年栈的顺序和链式存储的表示和实现 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验三栈的顺序和链式存储的表示和实现实验目的:1.熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等。2.掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现。实验内容:1.栈的顺序表示和实现编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能。(1)初始化顺序栈(2)插入一个元素(3)删除栈顶元素(4)取栈顶元素(5)便利顺序栈(6)置空顺序栈#include#include#define MAXNUM 20#define elemtype int/定义顺序栈的存储结构typedef struct elemtype stackMAXNUM;int top;s

2、qstack;/初始化顺序栈void initstack(sqstack*p)if(!p)printf(error);p-top=-1;/入栈void push(sqstack*p,elemtype x)/出栈elemtype pop(sqstack*p)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -/获取栈顶元素elemtype gettop(sqstack*p)elemtype x;if(p-top!=-1)x=p-stackp-top;return x;else printf(Underflow!n);return 0;/遍历顺序栈void outstack(s

3、qstack*p)int i;printf(n);if(p-toptop;i=0;i-)printf(第%d 个数据元素是:%6dn,i,p-stacki);/置空顺序栈void setempty(sqstack*p)/主函数main()sqstack*q;int y,cord;elemtype a;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -do printf(n 第一次使用必须初始化!nn);printf(n 主菜单n);printf(n 1 初始化顺序栈n);printf(n 2 插入一个元素n);printf(n 3 删除栈顶元素n);printf(n 4

4、取栈顶元素n);printf(n 5 置空顺序栈n);printf(n 6 结束程序运行n);printf(n-n);printf(请输入您的选择(1,2,3,4,5,6));scanf(%d,&cord);printf(n);switch(cord)case 1:q=(sqstack*)malloc(sizeof(sqstack);initstack(q);outstack(q);break;case 2:printf(请输入要插入的数据元素:a=);scanf(%d,&a);push(q,a);outstack(q);break;case 3:pop(q);outstack(q);brea

5、k;case 4:y=gettop(q);printf(n 栈顶元素为:%dn,y);outstack(q);break;case 5:setempty(q);printf(n 顺序栈被置空!n);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -outstack(q);break;case 6:exit(0);while(cord=6);2.栈的链式表示和实现编写一个程序实现链栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能。(1)初始化链栈(2)入栈(3)出栈(4)取栈顶元素(5)置空链栈(6)遍历链栈参考代码:#include#include#includ

6、e#define null 0 typedef int elemtype;typedef struct stacknode elemtype data;stacknode*next;stacknode;typedef struct stacknode*top;linkstack;/初始化链栈void initstack(linkstack*s)s-top=null;printf(n 已经初始化链栈!n);/链栈置空void setempty(linkstack*s)s-top=null;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 7 页 -printf(n 链栈被置空!n);

7、/入栈void pushlstack(linkstack*s,elemtype x)/出栈elemtype poplstack(linkstack*s)/取栈顶元素elemtype stacktop(linkstack*s)if(s-top=0)printf(n 链栈空 n);exit(-1);return s-top-data;/遍历链栈void disp(linkstack*s)printf(n 链栈中的数据位:n);printf(=n);stacknode*p;p=s-top;while(p!=null)printf(%dn,p-data);p=p-next;printf(=n);/主函

8、数void main()printf(=链栈操作=n);int i,m,n,a;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 7 页 -linkstack*s;s=(linkstack*)malloc(sizeof(linkstack);int cord;do printf(n 第一次使用必须初始化!nn);printf(n 主菜单n);printf(n 1 初始化链栈n);printf(n 2 入栈n);printf(n 3 出栈n);printf(n 4 取栈顶元素n);printf(n 5 置空链栈n);printf(n 6 结束程序运行n);printf(n-n);pr

9、intf(请输入您的选择(1,2,3,4,5,6));scanf(%d,&cord);printf(n);switch(cord)case 1:initstack(s);disp(s);break;case 2:printf(输入将要压入链栈的数据的个数:n=);scanf(%d,&n);printf(依次将%d 个数据压入链栈:n,n);for(i=1;i=n;i+)scanf(%d,&a);pushlstack(s,a);disp(s);break;case 3:printf(n 出栈操作开始!n);printf(输入将要出栈的数据个数:m=);scanf(%d,&m);for(i=1;i=m;i+)printf(n 第%d 次出栈的数据是:%dn,i,poplstack(s);break;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 7 页 -case 4:printf(nn链栈的栈顶元素为:%dnn,stacktop(s);break;case 5:setempty(s);disp(s);break;case 6:exit(0);while(cord=6);实验总结:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 7 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁