资讯专栏INFORMATION COLUMN

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

89542767 / 262人阅读

  写这篇文章的主要目的,是给大家介绍两门语言,C语言和Python两门语言,怎么利用其数据结构,实现十进制和二进制数的转换,具体代码下文也会给大家贴出来,希望能为大家带来一定的帮助。

问题描述

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

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

运行结果:

5.png

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…")

运行结果:

6.png

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127591.html

相关文章

  • Python之路系列之数字数据类型

    摘要:数字在中,整型长整型浮点数负数布尔值等都可以称之为数字类型。数字类型的复杂度整数比浮点数简单浮点数比复数简单。布尔类型布尔类型其实就是数字和的变种而来,即真或假,实际上就是内置的数字类型的子类而已。 上篇文章中我们简单的体验了Python语言基本概念与语法,那么在继续深入下去的过程中,不妨先学习几个常见的Python内置数据类型?这也是大部分Python教科书的学习目录,由浅至深,慢慢...

    Developer 评论0 收藏0
  • python入门

    摘要:零预备知识字符编码计算机只能处理数字,所以为文本需要转化为数字才能被计算机处理,计算机里八个比特作为一个字节,这是数据的存储基础单位。 零、预备知识 0.1 字符编码计算机只能处理数字,所以为文本需要转化为数字才能被计算机处理,计算机里八个比特(bit)作为一个字节(byte),这是数据的存储基础单位。计算机为了处理文本,有以下三种编码方式: ASCII码:只有大小写英文字母,数字...

    xeblog 评论0 收藏0
  • Django Web开发技术清单-Python基础篇

    摘要:使用单引号双引号和三引号或来表示字符串。不可变的集合函数会以字典类型返回当前位置的全部全局变量。用于将进制整数转换成进制,以字符串形式表示。返回字符串中最大的字母,或数组中的最大值。的作用就是减少了单行函数的定义。 问题答案由本人整理 1.基础语法是否熟悉?介绍一下 Python和其他语言最大的区别就是使用行和缩进,而不是大括号({})或者分号(;)来控制类、函数或者逻辑判断。Pyt...

    leeon 评论0 收藏0
  • Python从入门到精通】五万六千字对Python基础知识做一个了结吧!(二十八)【值得收藏】

    摘要:它是一门解析型的语言,何为解析型语言呢就是在运行时通过解析器将源代码一行行解析成机器码。而像语言,等则是编译型的语言,即通过编译器将所有的源代码一次性编译成二进制指令,生成一个可执行的程序。 ...

    leeon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<