您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

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

51自学网 2022-07-22 18:47:16
  python
这篇教程Python和C语言利用栈分别实现进制转换写得很实用,希望能帮到您。

问题描述

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

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进制转换的资料请关注wanshiok.com其它相关文章!


python&nbsp;正则表达式如何实现重叠匹配
Python实现读取HTML表格&nbsp;pd.read_html()
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1