//VC6.0下运行通过
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
#define ERROR 0
#define OVERFLOW -2
#include <stdio.h>
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)
{
SElemType e;
SqStack s;
InitStack(&s);
while(N){
Push(&s,N%8);
N= N/8;
}
printf("转换后的八进制数为:");
while(StackEmpty(s)!=1)
{
Pop(&s,&e);
printf("%d",e);
}
printf("\n");
}
void main()
{
int n;
printf("请输入一个十进制数:");
scanf("%d",&n);
Conversion(n);
}
分享到:
相关推荐
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
用栈实现十进制转换成二进制(c语言)用栈实现十进制转换成二进制(c语言)用栈实现十进制转换成二进制(c语言)
本文实例讲述了C语言用栈实现十进制转换为二进制的方法。分享给大家供大家参考,具体如下: #include #include #include<math.h> #include #include process.h #define SIZE 100 #define STACKINCREMENT 10 #...
C语言实现进制转换
用C语言顺序栈实现十进制和二进制的转换
用c语言实现八进制转化成十进制的一个简单的算法,只作为对于进制转换的理解
采用C++语言实现利用顺序栈、链栈将10进制数转为2、8、16进制数。 通过本编程实例,可以进一步了解到顺序栈和链栈之间区别和联系,体会两者的异同,进一步加深知识印象,是不错的练习素材哦。
c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同时输出。
二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,如:8位二进制数:...c语言中十六进制数前加“0x”表示,例如:十六进制:0x35 转换为二进制数为:00110101
用c语言实现进制转换,分享给大家,谢谢指导
C语言实现十进制转换成二八十六进制的转换,代码已经经过调试可以使用,放心下载!
C语言栈的方式实现十进制数转换为二进制数,完整代码,DEVC中直接使用
C语言,实现进制转换,十进制转换为十六进制 例如输入10,转换结果为a
将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。
该源码 详细说明了c语言中 顺序栈在进制转换上的应用
c语言十进制到任何进制的转换,代码卸载文档里面,方便实用,适合初学者。
设计算法把一个十进制整数转换为二至九进制之间的任意进制数输出
C语言编程实现十进制转化为十六进制,在VC6.0中可顺利实现
用栈实现十进制转八进制。用链表实现的栈。
c语言 进制转换 十进制 二进制 八进制 十六进制