实现顺序栈,并利用该栈完成进制转换。
时间: 2024-05-09 16:17:59 浏览: 65
好的,这个问题属于计算机科学,我可以回答。要实现顺序栈,可以使用数组来存储栈中的元素,然后利用栈的特性进行进制转换。具体实现可以参考以下代码:
```
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int isEmpty(Stack *s) {
return s->top == -1;
}
int isFull(Stack *s) {
return s->top == MAXSIZE - 1;
}
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack overflow\n");
return;
}
s->data[++s->top] = x;
}
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack underflow\n");
return -1;
}
return s->data[s->top--];
}
int main() {
int n, m, x;
Stack s;
initStack(&s);
printf("Enter a decimal number: ");
scanf("%d", &n);
printf("Enter the target base (2-16): ");
scanf("%d", &m);
while (n > 0) {
push(&s, n % m);
n /= m;
}
printf("The result is: ");
while (!isEmpty(&s)) {
x = pop(&s);
if (x < 10) {
printf("%d", x);
} else {
printf("%c", x - 10 + 'A');
}
}
printf("\n");
return 0;
}
```
这个程序实现了将一个十进制数转换为任意进制数的功能。例如,将十进制数 123 转换为二进制数,可以得到结果 1111011。
阅读全文