数据结构数制转换c语言
时间: 2023-11-20 10:05:48 浏览: 82
结构中的数制转换是将一个数从一种数制转换为另一种数制的过程。下面是一个C语言的数制转换实例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
#define MAXBUFFER 10
typedef struct {
char *base;
char *top;
int stacksize;
} SqStack;
void InitStack(SqStack *s) {
s->base = (char *)malloc(STACK_INIT_SIZE * sizeof(char));
if (!s->base) exit(0);
s->top = s->base;
s->stacksize = STACK_INIT_SIZE;
}
void Push(SqStack *s, char e) {
if (s->top - s->base >= s->stacksize) {
s->base = (char *)realloc(s->base, (s->stacksize + STACKINCREMENT) * sizeof(char));
if (!s->base) exit(0);
s->top = s->base + s->stacksize;
s->stacksize += STACKINCREMENT;
}
*(s->top) = e;
s->top++;
}
void Pop(SqStack *s, char *e) {
if (s->top == s->base) return;
*e = *--(s->top);
}
int StackLen(SqStack s) {
return s.top - s.base;
}
int main() {
SqStack s;
char c, e;
int len, i, sum = 0, product = 1;
InitStack(&s);
printf("请输入一个二进制数:");
scanf("%c", &c);
while (c != '\n') {
Push(&s, c);
scanf("%c", &c);
}
len = StackLen(s);
for (i = 0; i < len; i++) {
Pop(&s, &e);
sum += (e - '0') * product;
product *= 2;
}
printf("转换为十进制数为:%d\n", sum);
return 0;
}
```
该代码实现了将一个二进制数转换为十进制数的功能。具体实现过程是:先将输入的二进制数逐个压入栈中,然后依次弹出栈顶元素,计算出对应的十进制数并相加,最终得到转换后的十进制数。