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("请输入十进制整数:
");
scanf("%d", &dec);
while(dec)
{
push(&bs, dec%2);
dec /= 2;
}
printf("转换后的二进制数是:
");
while(bs.top != bs.base)
{
printf("%d", pop(&bs));
}
printf("
");
system("date /T");
system("TIME /T");
system("pause");
exit(0);
}


