C语言实现栈进制转换

编程探索课程 2024-03-02 07:09:20

10进制转换2进制 demo

在C语言中,你可以使用栈(stack)数据结构来实现进制转换。以下是一个简单的C语言程序,使用栈来实现不同进制数的转换:

1、定义栈结构及基本pop & push 操作

栈的基本操作

#include <stdio.h>#include <stdlib.h>// 定义一个结构体表示栈struct Stack { int *data; int top; int size;};// 初始化栈void initStack(struct Stack *stack) { stack->data = (int *)malloc(100 * sizeof(int)); stack->top = -1; stack->size = 100;}// 检查栈是否为空int isEmpty(struct Stack *stack) { return stack->top == -1;}// 检查栈是否已满int isFull(struct Stack *stack) { return stack->top == stack->size - 1;}// 入栈操作void push(struct Stack *stack, int value) { if (isFull(stack)) { printf("栈已满,无法入栈。\n"); } else { stack->top++; stack->data[stack->top] = value; }}// 出栈操作int pop(struct Stack *stack) { if (isEmpty(stack)) { printf("栈为空,无法出栈。\n"); return -1; } else { int topValue = stack->data[stack->top]; stack->top--; return topValue; }}// 打印栈顶元素int top(struct Stack *stack) { if (!isEmpty(stack)) { return stack->data[stack->top]; } printf("栈为空,无栈顶元素。\n"); return -1;}

push operation

2、不同进制转换

transfer

// 十进制转二进制void decToBinary(struct Stack *stack, int num) { while (num != 0) { push(stack, num % 2); num /= 2; }}// 二进制转十进制int binaryToDec(struct Stack *stack) { int result = 0; while (!isEmpty(stack)) { int popValue = pop(stack); result += popValue * (int)pow(2, stack->top); } return result;}3、main 主函数测试

coding the world

int main() { struct Stack stack; // 初始化栈 initStack(&stack); int num, result; printf("请输入一个十进制数:"); scanf("%d", &num); // 十进制转二进制 decToBinary(&stack, num); printf("十进制数 %d 转换为二进制为:", num); while (!isEmpty(&stack)) { printf("%d", top(&stack)); } printf("\n"); // 二进制转十进制 result = binaryToDec(&stack); printf("二进制数转换为十进制为:%d\n", result); return 0;}4、代码说明-readme

read me

在上述示例中,我们定义了一个栈结构 Stack,包含数据指针、栈顶指针和栈的大小。

我们实现了栈的基本操作:初始化栈、检查栈是否为空、检查栈是否已满、入栈、出栈、打印栈顶元素。

然后,我们实现了十进制转二进制和二进制转十进制的功能函数。

在 main 函数中,我们首先初始化栈,然后通过 scanf 输入一个十进制数。调用 decToBinary 函数将十进制数转换为二进制,并将二进制数入栈。接着,我们通过循环出栈并打印二进制数的每一位。

最后,调用 binaryToDec 函数将栈中的二进制数转换为十进制,并打印结果。

0 阅读:3

编程探索课程

简介:感谢大家的关注