C语言编程【问题描述】 写一个算法,将一个非负十进制数转为一个等价的八进制数 要求使用堆栈,且堆栈的基本操作使用链栈实现 【输入形式】 输入一个非负十进制整数 【输出形式】 输出对应八进制数 【样例输入】 10 【样例输出】 12
时间: 2023-11-30 18:02:03 浏览: 34
好的,这是一个关于将十进制数转为八进制数的问题,我可以提供一个使用链栈实现的C语言代码。
```
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkStack;
LinkStack InitStack(){
LinkStack s = (LinkStack)malloc(sizeof(LNode));
s->next = NULL;
return s;
}
int StackEmpty(LinkStack s){
return s->next == NULL;
}
void Push(LinkStack s, int x){
LNode *p = (LNode*)malloc(sizeof(LNode));
p->data = x;
p->next = s->next;
s->next = p;
}
int Pop(LinkStack s){
if(StackEmpty(s)){
printf("The stack is empty!\n");
return -1;
}
LNode *p = s->next;
s->next = p->next;
int x = p->data;
free(p);
return x;
}
void Conversion(int n){
LinkStack s = InitStack();
while(n){
Push(s, n % 8);
n /= 8;
}
while(!StackEmpty(s)){
printf("%d", Pop(s));
}
printf("\n");
}
int main(){
int n;
scanf("%d", &n);
Conversion(n);
return 0;
}
```
你可以将这段代码拷贝到本地的C语言编译器中编译运行,输入一个非负十进制整数,即可得到对应的八进制数。