- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
栈队列算法设计实验报告书
学生课程实验报告书
09级计算机科学与信息技术系
网络工程专业02班
学号:0930040250 姓名:郭文明
2010-2011学年 第二学期
实验
实验目的:
①熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现。
②熟悉队列的特点(先进先出)及基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构、链式存储结构以及循环队列上的实现。
实验内容:
一、数制转换问题
【问题描述】
将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。
例如: (1348)10=(2504)8
N N div 8 N mod 8
1348 168 4
168 21 0
21 2 5
2 0 2
从中我们可以看出,最先产生的余数4是转换结果的最低位,这正好符合栈的特性即后进先出的特性。所以可以用顺序栈来模拟这个过程。
【基本要求】
对于键盘输入的任意一个非负的十进制整数,打印输出与其等值的八进制数。由于上述的计算过程是从低位到高位顺序产生的八进制数的各个数位,而打印输出,一般来说应从高位到地位进行,恰好和计算过程相反。因此可以先将计算过程中得到的八进制数的各位进栈,待相对应的八进制数的各位均产生以后,再使其按顺序出栈,并打印输出。即得到了与输入的十进制数相对应的八进制数。
【测试数据】
由学生依据软件工程的测试技术自己确定。注意测试边界数据。
【提高】
实现八进制转换之后,对于键盘输入的任意一个非负的十进制整数,打印输出与其等值的十六进制数。
【实验程序如下】
//数制转换:实现2,8,10,16进制数制间的相互转换
#includestdio.h
#includestring.h
#includemalloc.h // malloc()等
#includectype.h
#includeprocess.h // exit()
#includemath.h
#includestdlib.h
#define STACK_INIT_SIZE 10 // 存储空间初始分配量
#define STACKINCREMENT 2 // 存储空间分配增量
#define MAX 20
typedef int SElemType; // 定义栈元素类型为整型
struct SqStack
{
SElemType *base; // 在栈构造之前和销毁之后,base的值为NULL
SElemType *top; // 栈顶指针
int stacksize; // 当前已分配的存储空间,以元素为单位
}; // 顺序栈
typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct LinkQueue
{
QueuePtr front; //对头指针
Qu
文档评论(0)