您的位置:首页 > 其它

栈的应用--数制转换(十进制数转换为二进制、八进制、十六进制)

2017-04-21 19:53 281 查看
结果图:



代码如下:

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;
typedef struct StackNode{
ElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
void InitStack(LinkStack &s){   //初始化
s=(LinkStack)malloc(sizeof(StackNode));
s=NULL;
}
bool StackEmpty(LinkStack s){ //判空
return (s==NULL);
}
Status PushStack(LinkStack &s,ElemType e){  //入栈
LinkStack p=(LinkStack)malloc(sizeof(StackNode));
p->data=e;
p->next=s;
s=p;
return OK;
}
Status PopStack(LinkStack &s,ElemType *e){  //出栈
LinkStack p=(LinkStack)malloc(sizeof(StackNode));
if(s==NULL)
return ERROR;
*e=s->data;
p=s;
s=s->next;
free(p);
return OK;
}
void main(){
LinkStack s;
InitStack(s);
int n,choice;
ElemType e;
printf("请输入一个十进制数:");
scanf("%d",&n);
printf("请输入要转换的进制数:");
scanf("%d",&choice);
switch(choice){
case 2: case 8:
while(n) {
PushStack(s,n%choice);
n=n/choice;
}
while(s){
PopStack(s,&e);
printf("%d",e);
}
printf("\n");
break;
case 16:
while(n){
PushStack(s,n%choice);
n=n/choice;
}
while(s){
PopStack(s,&e);
if(e>=10){
e+=55;
printf("%c",e);
}
else{
printf("%d",e);
}
}
printf("\n");
break;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二进制 struct typedef