c语言数据结构用栈的方式进行进制转换
时间: 2024-05-10 09:19:07 浏览: 92
下面是使用栈来实现进制转换的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100 // 栈的最大容量
typedef struct {
int top; // 栈顶指针
int data[STACK_SIZE]; // 栈的数据
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return s->top == STACK_SIZE - 1;
}
// 入栈操作
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack overflow!\n");
exit(1);
}
s->data[++s->top] = x;
}
// 出栈操作
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack underflow!\n");
exit(1);
}
return s->data[s->top--];
}
// 进制转换函数
void convert(int num, int base) {
Stack s;
initStack(&s);
while (num) {
push(&s, num % base);
num /= base;
}
while (!isEmpty(&s)) {
printf("%d", pop(&s));
}
}
int main() {
int num, base;
printf("Enter a decimal number: ");
scanf("%d", &num);
printf("Enter a base (2-16): ");
scanf("%d", &base);
if (base < 2 || base > 16) {
printf("Invalid base!\n");
return 1;
}
printf("The result is: ");
convert(num, base);
printf("\n");
return 0;
}
```
在这个代码中,我们定义了一个 `Stack` 结构体,包含栈顶指针 `top` 和栈的数据 `data`。然后,我们实现了栈的初始化、判断是否为空、判断是否已满、入栈和出栈操作。最后,我们定义了一个进制转换函数 `convert`,它使用栈来实现将一个十进制数转换为指定进制的数,并将结果输出。在 `main` 函数中,我们首先读入一个十进制数和一个进制数,然后调用 `convert` 函数进行进制转换。
阅读全文