




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上实验三 顺序栈操作实现实验日期: 2017 年 4 月 1 日 实验目的及要求1. 熟练掌握栈的结构,以及这种数据结构的特点;2. 能够在两种存储结构上实现栈的基本运算,特别注意栈满和栈空的判断条件及描述方法。实验内容已知顺序栈的类型定义如下:#define MAX 100typedef char datatype;typedef struct datatype dataMAX; int top;SeqStack, *SeqStackptr; 任务1题目要求任务一:创建自定义头文件seqStack.h,包含顺序栈的数据类型定义及基本操作函数,需定义的基本操作如下:(1
2、)void Error(char *s);/*自定义错误处理函数*/(2)void InitStack (SeqStackptr sp);/*初始化栈置空栈*/(3)int EmptyStack (SeqStackptr sp);/*判栈空*/(4)int FullStack (SeqStackptr sp);/*判栈满*/(5)void Push (SeqStackptr sp, datatype x);/*进栈(元素压入栈顶)*/(6)datatype Pop (SeqStackptr sp);/*出栈(元素从栈顶弹出)*/(7)datatype GetTop (SeqStackptr s
3、p);/*读栈顶元素(不出栈)*/(8)int Count (SeqStackptr sp);/*计算栈中元素个数*/任务二:创建一个新的程序文件sy13.cpp,请调用seqStack.h提供的顺序栈操作的函数完成把源文本文件中的所有十进制数转换成相应的指定进制的数值存于新的文本文件中,要求定义如下函数:(1)void Trans(int n, int r, char str)功能:把n整数转换为r进制的值并存于str数组中;(2)void TransFile(int r,char strin,char strout);功能:把strin文件中十进制整数转换为r进制的值并存于文件strout
4、中。其中strin和strout字符数组中分别存放源文件名和目标文件名。(思路:1. 以只读方式打开strin中的文件,以只写方式打开存于strout中的文件 2. 循环读取strin文件 (1)读一个整数到变量num中 (2)调用Trans函数将num转换为r进制的字符串result (3)将字符串result写入到文件strout中 3. 关闭strin文件,strout文件。)(3)main函数中准备指定进制r的值,源文件名和目标文件名,调用TransFile函数完成相应要求。2请回答下列问题(1)栈是限定在表的一端进行插入或删除操作的线性表,其操作原则是 后进先出 。(2)一个不带表头
5、结点链栈的栈顶指针是top,每个结点包含值域data和指针域next,判断栈空的条件为 top=NULL ,当p所指向的结点入栈,首先执行 判断栈是否满 ,然后执行 p->datap->top+=x 操作。(3)设数组S100存储一个顺序栈的元素,变量top指示下一个入栈元素在数组中的下标位置,栈为空的条件是 top-1=NULL ,栈为满的条件是 top>=100 。3seqStack.h及sy13.cpp源程序清单(含必要的注释)SeqStack.h:#include<stdio.h>#include<stdlib.h>#define MAX 10
6、0typedef char datatype;typedef struct datatype dataMAX;int top;SeqStack, *SeqStackptr;SeqStack s;SeqStackptr sp;void Error(char *s); /*自定义错误处理函数*/void InitStack(SeqStackptr sp); /*初始化栈置空栈*/int EmptyStack(SeqStackptr sp); /*判栈空*/int FullStack(SeqStackptr sp); /*判栈满*/void Push(SeqStackptr sp, datatype
7、 x); /*进栈(元素压入栈顶)*/datatype Pop(SeqStackptr sp); /*出栈(元素从栈顶弹出)*/datatype GetTop(SeqStackptr sp); /*读栈顶元素(不出栈)*/int Count(SeqStackptr sp); /*计算栈中元素个数*/void Error(char *s) /*自定义错误处理函数*/printf("n %s", s);exit(1); /*返回OS,该函数定义在stdlib.h中*/void InitStack(SeqStackptr sp) /*初始化栈置空栈*/sp->top = 0
8、;int EmptyStack(SeqStackptr sp) /*判栈空*/return sp->top = 0; /*返回值为1,栈空;返回值为0,栈不空*/int FullStack(SeqStackptr sp) /*判栈满*/return sp->top >= MAX; /*返回值为1,栈满;返回值为0,栈不满*/void Push(SeqStackptr sp, datatype x) /*进栈(元素压入栈顶)*/if (FullStack(sp) /*若栈满*/Error("Stack Full");sp->datasp->top
9、 = x;sp->top+;datatype Pop(SeqStackptr sp) /*出栈(元素从栈顶弹出)*/if (EmptyStack(sp) /*若栈空*/Error("Stack Empty");sp->top-;return sp->datasp->top;datatype GetTop(SeqStackptr sp) /*读栈顶元素(不出栈)*/if (EmptyStack(sp) /*若栈空*/Error("Stack Empty");return sp->datasp->top - 1;int C
10、ount(SeqStackptr sp) /*计算栈中元素个数*/return sp->top;sy13.cpp:#include"seqStack.h"void Trans(int n, int r, char str); /*把n整数转换为r进制的值并存于str数组中*/void TransFile(int r, char strin, char strout); /*把strin文件中十进制整数转换为r进制的值并存于文件strout中。其中strin和strout字符数组中分别存放源文件名和目标文件名*/void main() int r;char sMAX,
11、tMAX;printf("请输入进制r的值:");scanf("%d", &r);TransFile(r, s, t);void Trans(int n, int r, char str) /*把n整数转换为r进制的值并存于str数组中*/int i, c;SeqStack s;InitStack(&s);do c = n%r;if (c < 10) c = c + '0'else c = c - 10 + 'a'Push(&s, c); while (n /= r);i = 0;while
12、(!EmptyStack(&s) stri+ = Pop(&s);stri = '0'void TransFile(int r, char strin, char strout) /*把strin文件中十进制整数转换为r进制的值并存于文件strout中。其中strin和strout字符数组中分别存放源文件名和目标文件名*/int num, i, n;char resultMAX;FILE *fin;FILE *fout;if (fin = fopen("D:/strin.txt", "r") = NULL) Error("Can not open file!");if (fout = fopen("D:/strout.txt", "w") = NULL) Error("Can not open file!");fprintf(fout, "源数据转化为%d进制后为:n", r);while (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理电动车合同范例
- 借名买房合同范本
- 租赁合同通知函
- 农村收购单车合同范例
- 农村果园承包合同范本
- 云平台建设合同范本
- 云南租房合同范本
- 供应电水气合同范本
- 水电站隧道排水孔施工方案
- 乙方装修合同范本
- DeepSeek从入门到精通培训课件
- 俄罗斯进口冻肉合同范例
- 2025年湖北省技能高考(建筑技术类)《建设法规》模拟练习试题库(含答案)
- 急性呼衰院前急救流程
- 部编版七年级语文下册《第2课说和做》课件
- 养老服务信息化发展-深度研究
- 2024-2025学年第二学期学校总务工作计划(附2月-6月安排表行事历)
- 夫妻离婚协议书范本2024
- GB/T 3920-2024纺织品色牢度试验耐摩擦色牢度
- 交管12123学法减分题库(含答案)
- 2025年苏州工业职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
评论
0/150
提交评论