您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页数据结构之进制转换

数据结构之进制转换

来源:小侦探旅游网


算法与数据结构实验报告

实验三

实验名称: 栈和队列—进制转换 姓名: X X X 学号: 211106365 专业: 软件工程 班级: X班 指导教师: X X X 日期: 2013年 月 日

一、 实验目的

学会应用栈或队列解决进制转换问题,熟练掌握在顺序栈(队列)或链栈(队列)上实现的各种基本操作。

二、 实验内容与实验步骤

内容:利用栈实现十进制和其他任意进制数的任意转换输出问题

进制转换原理:N = (N div d) *d + N mod d(其中:div 为整除运算,mod 为求余运算)

步骤: 1 定义栈数据类型,采用链式存储结构实现 2 链栈基本操作函数原型声明 3 初始化栈 4 输入栈

5 输出栈 6 判空栈

7 自定义实现进制转换函数 8 数据调试

9 程序结束

三、 实验环境

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

四、 实验过程与分析

程序设计过程中忘了考虑到开始报数的数不能超过最大编号;而导致程序的健壮性不足,经修改后,解决了这一问题;

五、 实验结论

(1348)10 = (2504)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

typedef int SElemType; typedef struct {

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

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

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; }

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; }

int Pop(SqStack *s,SElemType *e) //输出栈 {

if (s->top==s->base) return ERROR;

s->top=s->top-1; *e = *s->top; }

int StackEmpty(SqStack s) //判空栈 {

if (s.top ==s.base) return 1; else

return 0; }

void Conversion(int N,int m) {

SElemType e; SqStack s;

InitStack(&s); while(N) {

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

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

Pop(&s,&e); if(e>=10) printf(\"%c\ else printf(\"%d\ } printf(\"\\n\"); }

void main() {

int n,m;

printf(\"请输入一个十进制数: \"); scanf(\"%d\ printf(\"需要转成的进制m:\"); scanf(\"%d\ Conversion(n,m); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务