C语言数据结构中栈的应用求二进制转化为十进制的代码
时间: 2024-10-16 08:12:32 浏览: 32
栈在C语言中常用于处理需要“先进后出”(Last In First Out, LIFO)的数据操作场景,比如递归函数调用、表达式求值等。对于将二进制数转换为十进制,可以利用栈存储每一位二进制数字,并在遍历过程中累加它们的权重。下面是一个简单的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int binaryToDecimal(int n) {
int decimal = 0, i = 0, remainder;
stack<int> st;
// 将二进制数的每一位存入栈
while (n > 0) {
remainder = n % 10;
st.push(remainder);
n /= 10;
}
// 遍历栈,计算十进制值
while (!st.empty()) {
remainder = st.top();
st.pop();
decimal += remainder * pow(2, i++);
}
return decimal;
}
int main() {
int binary = 101010; // 示例的二进制数
printf("二进制数 %d 转换成十进制数是: %d\n", binary, binaryToDecimal(binary));
return 0;
}
```
在这个代码里,我们首先将二进制数的每一位推入栈中,然后依次弹出栈顶元素并将其乘以对应的权值(2的i次方),最后累加得到十进制结果。
阅读全文