


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.数据构造A班级:软件二班学号:1607070212:X曾然日期:2021/10/25实验三 栈、队列的实现及简单应用一、实验目的1. 熟悉理解栈和队列的根本操作。2. 会使用栈和队列的根本操作求解一些实际问题。二、实验要求1. 根据布置的作业编写源程序,上机验证实验结果;2. 独立做实验,输入、调试所编程序;3. 实验完毕后,根据实验报告模板编写实验报告。三、实验内容和步骤用 Visual C+作为实验开发环境,创立一个Win32 Console Application工程,工程名为你的学号,添加下面文件:1数据构造定义:以seqStackDef.h和cirQueueDef.h为文件名; 2
2、根本操作和算法:以seqStackAlgo.h和cirQueueAlgo.h为文件名; 3调用根本操作和实现应用的主程序: 以stackQueueMain.cpp为文件名。 编写程序完成以下功能,文件seqStackDef.h定义顺序栈的构造体,文件cirQueueDef.h定义循环队列的构造体,文件seqStackAlgo.h实现栈在下面应用中所需的根本操作,文件cirQueueAlgo.h实现队列在下面应用中所需的根本操作,文件stackQueueMain.cpp中编写以下算法:源程序:seqStackDef.h:*define MAXSIZE 1024 /顺序栈最大长度typedef c
3、har elemtype;/elemtype可以为任意类型,假设为inttypedef struct SequenStackelemtype dataMAXSIZE;/将顺序栈定义为一维数组int top;SequenStack; /顺序栈的构造类型为SequenStackseqStackAlgo.h:SequenStack * Init_SequenStack()/申请内存空间SequenStack *S;S=(SequenStack *) malloc (sizeof(SequenStack);return S;int SequenStack_Empty(SequenStack *S)/判
4、断栈空if(S->top=-1)return 1;elsereturn 0;int SequenStack_Full(SequenStack *S)/判断栈满if(S->top+1=MAXSIZE)return 1;elsereturn 0;int SequenStack_Length(SequenStack *S)/取顺序栈的长度return(S->top+1);int Push_SequenStack(SequenStack *S,elemtype x)/入栈操作if(S->top>=MAXSIZE-1)printf("overflown"
5、);return 0;S->top+;S->dataS->top=x;return 1;int Pop_SequenStack(SequenStack *S,elemtype *x)/出栈操作if(S->top=-1) printf("overflown");return 0;else *x=S->dataS->top;S->top-;return 1;int GetTop_SequenStack(SequenStack *S,elemtype *x)/取栈顶元素if(S->top=-1) printf("overf
6、lown");return 0;else*x=S->dataS->top;return 1;cirQueueDef.h:*define MAXSIZE 1024/顺序队列最大长度typedef char elemtype;typedef struct SequenQueueelemtype dataMAXSIZE;int front; /定义头指针int rear; /定义尾指针SequenQueue;cirQueueAlgo.h:SequenQueue * Init_SequenQueue()/初始化队列SequenQueue *Q;Q=(SequenQueue *)m
7、alloc(sizeof(SequenQueue);Q->front=0;Q->rear=0;return Q;int SequenQueue_Empty(SequenQueue *Q)/判断队空if(Q->front=Q->rear)return 1;/空elsereturn 0;/不空int SequenQueue_Full(SequenQueue *Q)/判断队满if(Q->rear+1)%MAXSIZE=Q->front)return 1;elsereturn 0;int SequenQueue_Length(SequenQueue *Q)/取队列长
8、度return (Q->rear-Q->front+MAXSIZE)%MAXSIZE);int Enter_SequenQueue(SequenQueue *Q,elemtype x)/元素入队if(SequenQueue_Full(Q)return 0;/队满Q->dataQ->rear = x;Q->rear=(Q->rear+1)%MAXSIZE;return 1;int Delete_SequenQueue(SequenQueue *Q,elemtype *x)/队头元素出队if(Q->rear=Q->front)return 0;/队空
9、else*x=Q->dataQ->front;Q->front=(Q->front+1)%MAXSIZE;return 1;int GetFront_SequenQueue(SequenQueue *Q,elemtype *x)/取队头元素if(Q->rear=Q->front)return 0;/队空else*x=Q->dataQ->front;return 1;1. 函数Conversion实现进制转换。将十进制整数转换为二、八和十六进制数输出,要求用栈实现,栈中数据元素为char型。源程序:*include<stdio.h>*i
10、nclude<stdlib.h>*include"seqStackDef.h"*include"seqStackAlgo.h"*include"cirQueueDef.h"*include"cirQueueAlgo.h"void Conversion(int N,int d);int Inversion(char* a);void main()int N,d;printf("需要转换的十进制数为:");scanf("%d",&N);printf("
11、;n需要转换到几进制:");scanf("%d",&d); Conversion(N,d);void Conversion(int N,int d)elemtype *e,k;e=(elemtype *)malloc(sizeof(elemtype);int y;SequenStack *S=Init_SequenStack();printf("n%d转换到%d进制的数为",N,d);while(N>0)y=N%d;if(y<10)k=y+48;elsek=y+55;Push_SequenStack(S,k);N=N/d;w
12、hile(!SequenStack_Empty(S)Pop_SequenStack(S,e);printf("%c",*e);运行结果截图:2. 函数Inversion实现回文检测,判断字符串是否为回文,例abcba和123321为回文,字符串从键盘输入,要求用栈和队列实现。源程序:*include<stdio.h>*include<stdlib.h>*include"seqStackDef.h"*include"seqStackAlgo.h"*include"cirQueueDef.h"*
13、include"cirQueueAlgo.h"int Inversion(char* a);void main()char str20;int flag;printf("nn判断回文:请输入字符串n");scanf("%s",str);flag=Inversion(str);if(flag=1)printf("您所输入的数是回文");else printf("您所输入的数不是回文");int Inversion(char* a)int i=0;elemtype *x,*y;x=(elemtype *)malloc(sizeof(elemtype);y=(elemtype *)malloc(sizeof(elemtype); SequenStack *s=Init_SequenStack();SequenQueue *q=Init_SequenQueue();while(ai!='0')Push_SequenStack(s,ai);Enter_SequenQueue(q,ai);i+;while(!SequenStack_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二手奢侈品鉴定标准国际化研究报告
- 2025年二手电商信用体系建设中的信用数据整合与应用报告
- 骨科康复中药针剂行业跨境出海项目商业计划书
- 药品生产智能化管理系统行业深度调研及发展项目商业计划书
- 茶马古道研学之旅行业深度调研及发展项目商业计划书
- 2025年动漫产业链协同创新与产业数字化转型策略报告
- DB1301T 365-2021 规模化猪场批次化生产技术规程
- 【成都】2025年四川成都市广播电视台考核招聘工作人员4人笔试历年典型考题及考点剖析附带答案详解
- 2025年福建厦门天地开发建设集团有限公司招聘10人笔试参考题库附带答案详解
- 《幼儿社会教育与活动指导》课件-第二章 幼儿社会教育的目标内容和方法途径
- 井下变电所检修高爆开关施工安全技术措施
- 2022-2023学年乐山市市中区四年级数学第二学期期末教学质量检测试题含解析
- 岳麓山风景名胜区总体规划成果说明书
- 2023北京西城初二二模生物(试题含答案)
- ZZ028 中职法律实务赛项赛题-2023年全国职业院校技能大赛拟设赛项赛题完整版(10套)
- 巨力索具(河南)有限公司年生产10万吨钢丝及5万吨钢丝绳项目环境影响报告
- 三段式电流保护的整定与接线课件
- GB/T 18920-2002城市污水再生利用城市杂用水水质
- GB 10055-2007施工升降机安全规程
- 经济周期理论精编版课件
- OECD税收协定范本中英对照文本
评论
0/150
提交评论