加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

栈实现进制转换的Python和C语义代码怎样编辑

发布时间:2023-07-03 13:10:48 所属栏目:语言 来源:
导读:这篇文章主要讲解了“栈实现进制转换的Python和C语义代码怎样写”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思

这篇文章主要讲解了“栈实现进制转换的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语义代码怎样写”的学习就结束了,希望能够解决大家的疑惑,另外大家动手实践也很重要,对大家加深理解和学习很有帮助。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!