c++用栈实现进制转换,python用栈实现十进制转二进制
本文主要详细介绍Python和C语言如何利用堆栈数据结构分别将十进制数转换成二进制数。本文中的示例代码解释的很详细,有需要的可以参考一下。
00-1010问题描述C语言实现Python实现
目录
利用栈的数据结构实现十进制数到二进制数的转换。
问题描述
顺序存储结构实现表堆栈
代码:
#包含stdlib.h
#包含stdio.h
#define STACK_INIT_SIZE 100 //堆栈的初始开放空间大小
#define STACK_INCREMENT 10 //堆栈附加空间大小
//堆栈的结构
typedef结构堆栈{
int * base
int * top
int大小;
} binStack
//堆栈初始化
binStack stack_init()
{
binStack bs
bs . base=(int *)malloc(sizeof(int)* STACK _ INIT _ SIZE);
bs . top=bs . base;
bs.size=STACK _ INIT _ SIZE
返回bs;
}
//堆栈
void push(binStack *bs,int e)
{
if(bs-top - bs-base=bs-size)
{
bs-size=STACK _ INCREMENT;
bs-base=realloc(bs-base,bs-size);
}
*(bs-top)=e;
}
//退出堆栈
int pop(binStack *bs)
{
如果(bs-top!=基站)
{
bs-top-;
return * bs-top;
}
return-1;
}
//主函数
void main()
{
int dec
bin stack bs=stack _ init();
Printf(请输入一个十进制整数: n );
scanf(%d ,dec);
当(十二月)
{
推送(bs,12月%2日);
dec/=2;
}
Printf(转换后的二进制数为: n );
而(bs.top!=bs.base)
{
printf(%d ,pop(bs));
}
printf( n n );
系统(日期/时间);
系统(时间/T );
系统(“暂停”);
退出(0);
}
运行结果:
C语言实现
对于stack,我们可以使用python内置的list实现(或者链表实现),因为list是一个线性数组,末尾插入和删除一个元素的时间是O(1),非常符合stack的要求。
代码:
datetime//显示由时间引入的库
导入时间//
来自皮普。_ vendor.distlib.com pat import raw _ input//使命令窗口不立即关闭导入的库。
//堆栈类
BinStack:级
def __init__(self):
self.bs=[]
//堆栈
定义推送(self,e):
自我bs .追加(e)
//退出堆栈
def pop(自身):
if self.bs:
返回self.bs.pop()
else:
引发LookupError(stack是空的!)
//检查堆栈是否为空,返回False而不是True。
def isEmpty(self):
返回布尔值(self.bs)
if __name__==__main__:
binStack=BinStack()
Dec=int(输入(请输入一个十进制整数:n ))
打印(转换后的二进制数为:)
而dec!=0:
binStack.push(十二月%2日)
dec //=2
while bin stack . isempty()==true :
打印( {} )。format(binStack.pop()),end=“”)
else:
打印( n )
//打印时间
datetime=datetime.datetime.now()
print(datetime . strftime( % Y-% m-% d n % h :% m :% S ))
//使命令窗口不立即关闭
输入(按回车键退出…)
运行结果:
那就是Python和C语言分别使用堆栈实现二进制转换的细节。更多关于Python二进制转换的信息,请关注热门IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。