网络编程
位置:首页>> 网络编程>> Python编程>> Python和C语言利用栈分别实现进制转换

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

作者:观察者555  发布时间:2022-10-02 15:43:15 

标签: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和C语言利用栈分别实现进制转换

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语言利用栈分别实现进制转换

来源:https://blog.csdn.net/guanchazhe55/article/details/125653716

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com