给一个十进制数,输出它的八进制数。
由于取余所得得到数需要逆序输出,符合栈的特征(后进先出),所以使用栈来完成。
源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct SNode{
int date; //数据域
struct SNode *next;
}SNode,*Sqlist;
//入栈
void Push(Sqlist s, int e){
Sqlist temp;
//动态分配空间
temp = (Sqlist*)malloc(sizeof(SNode));
temp->date = e;
//新插入的结点总是在s(头结点)之后
temp->next = s->next;
s->next = temp;
}
void pop(Sqlist s){
int x;
Sqlist q;
//将q指向头结点的下一个
q=s->next;
//避免q为空
while(q){
//将栈顶元素给x,并输出
x = q->date;
printf("%d",x);
//释放q
s->next = q->next;
free(q);
//q指向s的下一个,也就是栈顶元素
q = s->next;
}
}
int main()
{
int n;
//定义一个头结点,使他指向空
Sqlist L;
L = (Sqlist*)malloc(sizeof(SNode));
L ->next = NULL;
printf("输入十进制数:");
scanf("%d",&n);
//避免n为0
while(n){
//入栈
Push(L,n%8);
n = n/8;
}
printf("八进制数为:");
pop(L);
return 0;
}
运行结果:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)