ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:49.46KB ,
资源ID:6642892      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6642892.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验三顺序栈操作实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验三顺序栈操作实现.docx

1、实验三 顺序栈操作实现实验三 顺序栈操作实现实验日期: 2017 年 4 月 1 日 实验目的及要求1. 熟练掌握栈的结构,以及这种数据结构的特点;2. 能够在两种存储结构上实现栈的基本运算,特别注意栈满和栈空的判断条件及描述方法。实验内容已知顺序栈的类型定义如下:#define MAX 100typedef char datatype;typedef struct datatype dataMAX; int top;SeqStack, *SeqStackptr; 任务1题目要求任务一:创建自定义头文件seqStack.h,包含顺序栈的数据类型定义及基本操作函数,需定义的基本操作如下:(1)v

2、oid 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 sp)

3、;/*读栈顶元素(不出栈)*/(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#include#define MAX 100typedef char datatype;typedef struct datatyp

6、e 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 x); /*进栈(元素压入栈顶)*/datatype Pop(SeqStackptr

7、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;int EmptyStack(SeqStackptr sp) /*判栈空*/ return sp-top = 0

8、; /*返回值为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 = x; sp-top+;datatype Pop(SeqStackptr sp) /*出栈(元素从栈顶弹出)*/ if (EmptyStack(sp) /*若栈空*

9、/ 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 Count(SeqStackptr sp) /*计算栈中元素个数*/ return sp-top;sy13.cpp:#includeseqStack.hvoid Trans(int n, int r, char str); /*把n整数转换为r进制的

10、值并存于str数组中*/void TransFile(int r, char strin, char strout); /*把strin文件中十进制整数转换为r进制的值并存于文件strout中。其中strin和strout字符数组中分别存放源文件名和目标文件名*/void main() int r; char sMAX, 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

11、 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 (!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 re

12、sultMAX; 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 (!feof(fin) fscanf(fin, %d, &num); Trans(num, r, result); fprintf(fout, %s , result); fclose(fin); fclose(fout);4源文本文件的内容,程序执行后目标数据文件的内容实验总结分析(本程序的重点与难点,调试中出现的问题及解决方法等)Welcome ToDownload !欢迎您的下载,资料仅供参考!

copyright@ 2008-2022 冰豆网网站版权所有

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