这篇教程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 正则表达式如何实现重叠匹配 Python实现读取HTML表格 pd.read_html() |