用C语言实现:问题描述】 写一个算法,将一个非负十进制数转为一个等价的八进制数 要求使用堆栈,且堆栈的基本操作使用链栈实现 【输入形式】 输入一个非负十进制整数 【输出形式】 输出对应八进制数 【样例输入】 10 【样例输出】 12
时间: 2023-11-30 12:04:16 浏览: 134
好的,下面是使用堆栈(链栈)实现将一个非负十进制数转为一个等价的八进制数的C语言代码,请您参考:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
typedef struct Stack {
Node *top;
} Stack;
void initStack(Stack *s) {
s->top = NULL;
}
void push(Stack *s, int data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = s->top;
s->top = newNode;
}
int pop(Stack *s) {
if (s->top == NULL) {
printf("Stack is empty!\n");
return -1;
}
int data = s->top->data;
Node *temp = s->top;
s->top = s->top->next;
free(temp);
return data;
}
int isEmpty(Stack s) {
return s.top == NULL;
}
int main() {
Stack s;
initStack(&s);
int num;
scanf("%d", &num);
if (num == 0) {
printf("0");
return 0;
}
while (num > 0) {
push(&s, num % 8);
num /= 8;
}
while (!isEmpty(s)) {
printf("%d", pop(&s));
}
printf("\n");
return 0;
}
```
输入样例:
```
10
```
输出样例:
```
12
```
阅读全文