Python和C语言利用栈分别实现进制转换
发布日期:2022-07-20 19:57    |    文章来源:CSDN
										
									问题描述
利用栈的数据结构实现将十进制数转换成二进制数
C语言实现
顺序表的存储结构实现栈
代码:
#include <stdlib.h>
#include <stdio.h>
 
#define STACK_INIT_SIZE 100//栈初始开辟空间大小
#define STACK_INCREMENT 10 //栈追加空间大小
 
//栈的结构体
typedef struct stack{
 int *base;
 int *top;
 int size;
}binStack;
 
//栈初始化
binStack stack_init()
{
 binStack bs;
 bs.base = (int *)malloc(sizeof(int)*STACK_INIT_SIZE);
 bs.top = bs.base;
 bs.size = STACK_INIT_SIZE;
 return 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)
{
 if(bs->top != bs->base)
 {
  bs->top--;
  return *bs->top;
 }
 return -1;
}
 
//主函数
void main()
{
 int dec;
 binStack bs = stack_init();
 printf("请输入十进制整数:\n");
 scanf("%d", &dec);
 while(dec)
 {
  push(&bs, dec%2);
  dec /= 2;
 }
 printf("转换后的二进制数是:\n");
 while(bs.top != bs.base)
 {
  printf("%d", pop(&bs));
 }
 printf("\n\n");
 system("date /T");
 system("TIME /T");
 system("pause");
 exit(0); 
}
运行结果:

Python实现
对于stack我们可以使用python内置的list实现(也可以用链表实现),因为list是属于线性数组,在末尾插入和删除一个元素所使用的时间都是O(1),这非常符合stack的要求。
代码:
import datetime  //显示时间引入的库
import time//
from pip._vendor.distlib.compat import raw_input  //使命令窗口不立即关闭引入的库
 
//栈类
class BinStack:
 def __init__(self):
  self.bs = []
 
 //入栈
 def push(self, e):
  self.bs.append(e)
 
 //出栈  
 def pop(self):
  if self.bs:
return self.bs.pop()
  else:
raise LookupError("stack is empty!")
 
 //检查栈是否为空,是返回False,不是返回True
 def isEmpty(self):
  return bool(self.bs)
  
if __name__ == '__main__':
 binStack = BinStack()
 dec = int(input("请输入十进制整数:\n"))
 print("转换后的二进制数是:")
 while dec != 0:
  binStack.push(dec%2)
  dec //= 2
 while binStack.isEmpty() == True:
  print("{}".format(binStack.pop()), end="")
 else:
  print("\n")
 //打印时间
 datetime = datetime.datetime.now()
 print(datetime.strftime("%Y-%m-%d\n%H:%M:%S"))
 //使命令窗口不立即关闭
 input("Press Enter to exit…")
运行结果:

以上就是Python和C语言利用栈分别实现进制转换的详细内容,更多关于Python进制转换的资料请关注本站其它相关文章!
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。
									相关文章
														
														
														
														
														
														
														
														
														
														
									
									
									
								 关注官方微信
                    关注官方微信