Python和C语言利用栈分别实现进制转换

 更新时间:2022-08-09 08:35:33   作者:佚名   我要评论(0)

目录问题描述C语言实现Python实现问题描述
利用栈的数据结构实现将十进制数转换成二进制数
C语言实现
顺序表的存储结构实现栈
代码:
#inclu

问题描述

利用栈的数据结构实现将十进制数转换成二进制数

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进制转换的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
  • python中常见进制之间的转换方式
  • Python进制转换用法详解
  • Python3进制之间的转换代码实例
  • python实现基本进制转换的方法
  • C语言每日练习之进制转换
  • C语言实现进制转换函数的实例详解
  • C语言用栈实现十进制转换为二进制的方法示例

相关文章

  • Python和C语言利用栈分别实现进制转换

    Python和C语言利用栈分别实现进制转换

    目录问题描述C语言实现Python实现问题描述 利用栈的数据结构实现将十进制数转换成二进制数 C语言实现 顺序表的存储结构实现栈 代码: #inclu
    2022-08-09
  • golang架构设计开闭原则手写实现

    golang架构设计开闭原则手写实现

    目录缘起开闭原则场景思路ICourse.goGolangCourse.goIDiscount.goDiscountedGolangCourse.goopen_close_test.go测试缘起 最近复习设计模式 拜
    2022-08-09
  • go语言中的面向对象

    go语言中的面向对象

    Go语言没有继承、构造函数和析构函数等概念,但是它是面向对象的。 .net中类型系统分为值类型和引用类型,两种转换需要进行装箱和拆箱,都是
    2022-08-09
  • 剖析SpringCloud Feign中所隐藏的坑

    剖析SpringCloud Feign中所隐藏的坑

    目录背景DebugFeign 的实现总结背景 前段时间同事碰到一个问题,需要在 SpringCloud 的 Feign 调用中使用自定义的 URL;通常情况下是没有这个
    2022-08-09
  • python接口自动化使用requests库发送http请求

    python接口自动化使用requests库发送http请求

    目录前言一、requests库二、HTTP 请求方法三、发送GET请求四、发送POST请求五、获取响应数据六、高级操作6.1文件下载6.2文件上传6.3SSL证书验
    2022-08-09
  • React实现监听粘贴事件并获取粘贴板中的截图

    React实现监听粘贴事件并获取粘贴板中的截图

    目录监听粘贴事件并获取粘贴板中的截图TSX中给组件添加监听粘贴事件从粘贴板获取截图文件React监听事件事件监听绑定的事件函数相关扩展监听粘
    2022-08-09
  • Python使用Rich?type和TinyDB构建联系人通讯录

    Python使用Rich?type和TinyDB构建联系人通讯录

    目录引言工具准备通讯录特征如何创建联系人模型如何使用TinyDB创建数据库如何使用typer创建命令行如何使用Rich设计终端如何使用打字命令连接
    2022-08-09
  • 一文解答什么是MySQL的回表

    一文解答什么是MySQL的回表

    目录引言聚簇索引和非聚簇索引是什么?主键索引和非主键索引有什么区别?B-Tree 和 B+Tree 的简单理解如何避免回表?引言 简单来说,回表就是
    2022-08-09
  • resubmit渐进式防重复提交框架示例

    resubmit渐进式防重复提交框架示例

    目录resubmit创作目的特性maven 引入编码自定义spring 整合使用maven 引入@EnableResubmit 注解说明测试代码整合 spring-bootmaven 引入代码
    2022-08-09
  • 一文详解Golang中net/http包的实现原理

    一文详解Golang中net/http包的实现原理

    目录前言http包执行流程http包源码分析端口监听请求解析路由分配响应处理前言 Go语言自带的net/http包提供了HTTP客户端和服务端的实现,实现
    2022-08-09

最新评论