请用出栈入栈的方法写一个数据结构的进制转换的c++代码给我
时间: 2024-05-02 19:19:07 浏览: 93
当然,我非常愿意帮你写代码啦!以下是使用栈实现进制转换的C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACK_SIZE 50 // 栈的最大容量
typedef struct Stack {
int top; // 栈顶指针
int data[STACK_SIZE]; // 栈中的数据
} Stack;
// 初始化栈
void init(Stack *s)
{
s->top = -1;
memset(s->data, 0, sizeof(s->data));
}
// 入栈操作
void push(Stack *s, int val)
{
if (s->top == STACK_SIZE-1) {
printf("Stack overflow!\n");
return;
}
s->top++;
s->data[s->top] = val;
}
// 出栈操作
int pop(Stack *s)
{
if (s->top == -1) {
printf("Stack is empty!\n");
return -1;
}
int val = s->data[s->top];
s->top--;
return val;
}
// 十进制转换为 n 进制
void convert(int num, int n)
{
Stack s;
init(&s);
while (num) {
int remainder = num % n; // 求出余数
push(&s, remainder); // 入栈
num /= n; // 更新 num
}
// 反转栈中元素并输出
while (s.top != -1) {
printf("%d", pop(&s));
}
}
int main()
{
int num, n;
printf("Please input a number in decimal: ");
scanf("%d", &num);
printf("Please input the radix: ");
scanf("%d", &n);
printf("%d in decimal -> %d in radix %d\n", num, n, n);
convert(num, n);
return 0;
}
```
当然,在这个程序中未做输入的有效性验证。
阅读全文