免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 栈的顺序和链式存储的表示和实现实验目的:1. 熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等。2. 掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现。实验内容:1. 栈的顺序表示和实现编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能。(1) 初始化顺序栈(2) 插入一个元素(3) 删除栈顶元素(4) 取栈顶元素(5) 便利顺序栈(6) 置空顺序栈#include #include#define MAXNUM 20#define elemtype int/定义顺序栈的存储结构typedef struct elemtype stackMAXNUM;int top;sqstack;/初始化顺序栈void initstack(sqstack *p)if(!p)printf(error);p-top=-1;/入栈void push(sqstack *p,elemtype x)/出栈elemtype pop(sqstack *p)/获取栈顶元素elemtype gettop(sqstack *p)elemtype x;if(p-top!=-1)x=p-stackp-top;return x;elseprintf(Underflow!n);return 0;/遍历顺序栈void outstack(sqstack *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;doprintf(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);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);break;case 4:y=gettop(q);printf(n栈顶元素为: %dn,y);outstack(q);break;case 5:setempty(q);printf(n顺序栈被置空! n);outstack(q);break;case 6:exit(0);while(cord=6);2. 栈的链式表示和实现编写一个程序实现链栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能。(1) 初始化链栈(2) 入栈(3) 出栈(4) 取栈顶元素(5) 置空链栈(6) 遍历链栈参考代码:#include #include#include#define null 0typedef int elemtype;typedef struct stacknodeelemtype data;stacknode *next;stacknode;typedef structstacknode *top;linkstack;/初始化链栈void initstack(linkstack *s)s-top=null;printf(n已经初始化链栈!n);/链栈置空void setempty(linkstack *s)s-top=null;printf(n链栈被置空!n);/入栈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);/主函数void main()printf(=链栈操作=n);int i,m,n,a;linkstack *s;s=(linkstack *)malloc (sizeof(linkstack);int cord;doprintf(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);printf(请输入您的选择(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,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北省晋州市辅警招聘考试试题题库附答案详解【夺分金卷】
- 安徽团校考试试题及答案
- 2025年江西省瑞昌市辅警招聘考试试题题库含答案详解【综合题】
- 2025年河北省迁安市辅警招聘考试试题题库附答案详解
- 广州市社会主义学院(广州中华文化学院)公开招聘文化交流工作人易考易错模拟试题(共500题)试卷后附参考答案
- 广东金融学院学科带头人教学科研骨干招考易考易错模拟试题(共500题)试卷后附参考答案
- 广东广州市水务局2025年下半年直属事业单位招考复核易考易错模拟试题(共500题)试卷后附参考答案
- 山东阳信县招考事业单位人员易考易错模拟试题(共500题)试卷后附参考答案
- 山东日照市住房公积金管理中心2025年下半年招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 国家能源集团广东电力限公司2025年下半年所属部分企业系统内招聘(第二批)易考易错模拟试题(共500题)试卷后附参考答案
- 南充市嘉陵城市发展集团有限公司2025年公开招聘工作人员(10人)考试参考题库及答案解析
- 建筑施工安全生产三项制度
- 医院中心供氧系统管理制度
- 2025年中小学教师正高级职称评聘答辩试题(附答案)
- 失利学生心理疏导策略-洞察与解读
- 2025年贵州省公职人员时事政治考试试题(附含答案)
- 法务审计部年度工作总结及未来计划
- 品牌历史与文化价值分析报告
- 2025年司法鉴定学专业题库- 电子数据案件中的司法鉴定
- 货代公司营销策划方案
- 高中钠的化学反应课件
评论
0/150
提交评论