云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 顺序栈实现数值转换

顺序栈实现数值转换

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 2:13:55

算法与数据结构实验报告

实验二

实验名称: 顺序栈实现数值转换 姓名: 学号:

专业: 计算机科学与技术 班级: 指导教师: 日期: 2013年11月2日

一、 实验目的

本实验利用顺序栈的基本操作实现十进制和其他任意进制数的任意转换输出,并通过该实验理解和掌握线性表的特点。 二、 实验内容与实验步骤 内容:1、构建顺序栈或是链式栈。

2、利用构建好的栈存储进制转换结果,并进行输出。

3、实现十进制和任意进制转换(二进制、八进制、十六进制)

步骤:栈(进制转换) 1 构建顺序栈

2 输入一个要转换成8进制的数n;

3 输入的数n通过转换后输出转换成八进制的值; 4 定义一个参数m表示要转换的进制数;

5 输入的数n通过转换后输出转换成m进制的值; 6 运行结果

三、 实验环境

操作系统winXP、开发平台:Microsoft Visual C++6.0

四、 实验过程与分析

调试过程中,虽然没有出现错误,但是在运行的时候却出现了问题,导

致每个运算都没有结果,为一连串的数字,在不断地检查程序后,发现在主函数中,没有设定好实参,改变这个实参后程序就可以运行成功了。

五、 实验结论

(1348)= (2504)

10

8

(11)10 = (B)16

(8)10 = (1000)2

六、 附录

带注释的源程序

#define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量 #define ERROR 0 #define OVERFLOW -2 #include #include #include 1.栈的顺序表示及实现 typedef int SElemType; typedef struct {

SElemType *base;// 在栈构造之前和销毁之后,base 的值为NULL SElemType *top ;// 栈顶指针

int StackSize; //当前已分配的存储空间,以元素为单位 }SqStack;

2.初始化栈

void InitStack(SqStack *s) {

s->base =(SElemType*)malloc (STACK_INIT_SIZE * sizeof(SElemType)); if(!s->base) exit(OVERFLOW); s->top=s->base;

s->StackSize= STACK_INIT_SIZE; }

3. 输入栈

void Push(SqStack *s,SElemType e) {

if (s->top-s->base>=s->StackSize){ //栈满,追加存储空间 s->base=(SElemType *) realloc (s->base,(s->StackSize+STACKINCREMENT)*sizeof(SElemType));

if(!s->base) exit(OVERFLOW);//若内存中没有 s->StackSize+STACKINCREMENT个连续空间则分配失败 s->top=s->base+s->StackSize; s->StackSize+=STACKINCREMENT;

}

*s->top++ =e; }

4.输出栈

int Pop(SqStack *s,SElemType *e) {

if (s->top==s->base) return ERROR; s->top=s->top-1; *e = *s->top; }

5.判空栈

int StackEmpty(SqStack s) {

if (s.top ==s.base) {

return 1; }

else {

return 0; } }

6.实现十进制和任意进制转换

void Conversion(int N,int m) {

SElemType e; SqStack s;

InitStack(&s); while(N){

Push(&s,N%m); N= N/m; }

printf(\转换后的m进制数为:\ while(StackEmpty(s)!=1) {

Pop(&s,&e); if(e>=10) {

printf(\ }

else printf(\ printf(\ } }

7.通过main函数调用以上的函数 void main() {

int n,m;

printf(\请输入一个十进制数和m的值:\ scanf(\ Conversion(n,m); }

搜索更多关于: 顺序栈实现数值转换 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

算法与数据结构实验报告 实验二 实验名称: 顺序栈实现数值转换 姓名: 学号: 专业: 计算机科学与技术 班级: 指导教师: 日期: 2013年11月2日 一、 实验目的 本实验利用顺序栈的基本操作实现十进制和其他任意进制数的任意转换输出,并通过该实验理解和掌握线性表的特点。 二、 实验内容与实验步骤 内容:1、构建顺序栈或是链式栈。 2、利用构建好的栈存储进制转换结果,并进行输出。 3、实现十进制和任

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com