顺序栈实现十进制转换为八进制
时间: 2023-05-15 20:07:52 浏览: 108
用C语言顺序栈实现十进制和二进制的转换.docx
可以使用顺序栈来实现十进制转换为八进制。具体实现方法如下:
1. 将十进制数不断除以8,将余数依次入栈,直到商为0为止。
2. 依次出栈,将余数拼接起来,即为八进制数。
以下是示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct {
int *base;
int *top;
int stacksize;
} SqStack;
void InitStack(SqStack *S) {
S->base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
if (!S->base) exit(0);
S->top = S->base;
S->stacksize = STACK_INIT_SIZE;
}
void Push(SqStack *S, int e) {
if (S->top - S->base >= S->stacksize) {
S->base = (int *)realloc(S->base, (S->stacksize + STACKINCREMENT) * sizeof(int));
if (!S->base) exit(0);
S->top = S->base + S->stacksize;
S->stacksize += STACKINCREMENT;
}
*(S->top++) = e;
}
int Pop(SqStack *S) {
if (S->top == S->base) exit(0);
return *(--S->top);
}
int StackEmpty(SqStack S) {
if (S.top == S.base) return 1;
else return 0;
}
void Conversion(int n) {
SqStack S;
InitStack(&S);
while (n) {
Push(&S, n % 8);
n /= 8;
}
while (!StackEmpty(S)) {
printf("%d", Pop(&S));
}
}
int main() {
int n;
printf("请输入一个十进制数:");
scanf("%d", &n);
printf("转换为八进制数为:");
Conversion(n);
printf("\n");
return 0;
}
```
输入一个十进制数,即可输出对应的八进制数。
阅读全文